gpt4 book ai didi

javascript - GSAP Javascript if else 语句问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:49 24 4
gpt4 key购买 nike

我正在使用 HTML、CSS 和 JS 构建一个基本的网上银行应用。

到目前为止,我有最近的交易屏幕和用于打开每笔交易描述的简单动画。

我使用 GSAP 创建动画,使用 jQuery 处理元素。

但是,我在描述窗口打开后关闭时遇到了问题。

CODEPEN HERE , 这是 JS:

$(document).ready(function() {
$('.list li').click(function() {

var i = $(this).find('i');
var li = $(this);
var desc = $(this).next();
var tl = new TimelineMax({paused:false});
var open = false;

if (open === true) {
tl.to(i, .3, {rotation: 0})
.to(li, .3, {borderBottom: 'none', delay: -.2})
.to(desc, .3, {height: '0', padding: '0', delay: -.2});
open = false;
} else {
tl.to(i, .3, {rotation: 90})
.to(li, .3, {borderBottom: '2px solid #95a5a6', delay: -.2})
.to(desc, .3, {height: '55px', padding: '5px', delay: -.2});
open = true;
}


});


});

我使用 if 语句根据描述窗口是打开还是关闭来决定播放哪个动画。

我是一名学习编码的设计师,我会采纳任何我能得到的建议。

最佳答案

您的想法是正确的,但是 var open = false; 的范围不对。它的编写方式,每次调用点击处理程序时 open 都定义为 false,您想将其放在父范围内:在点击处理程序之外,在点击之前曾经调用过处理程序。

编辑 因为您想跟踪每个元素的“打开”状态,您需要为每个元素创建一个闭包。您可以使用 .each() 来做到这一点。

你可以这样做:

$(document).ready(function() {

$('.list li').each(function() {

var open = false; // <-- Put "open" here

$(this).click(function() {

var i = $(this).find('i');
var li = $(this);
var desc = $(this).next();
var tl = new TimelineMax({paused:false});
// get rid of "open" here

if (open === true) {
tl.to(i, .3, {rotation: 0})
.to(li, .3, {borderBottom: 'none', delay: -.2})
.to(desc, .3, {height: '0', padding: '0', delay: -.2});
open = false;
} else {
tl.to(i, .3, {rotation: 90})
.to(li, .3, {borderBottom: '2px solid #95a5a6', delay: -.2})
.to(desc, .3, {height: '55px', padding: '5px', delay: -.2});
open = true;
}


});


});
});

关于javascript - GSAP Javascript if else 语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com