如何重复淡入淡出和动画?
How repeat fade and animate?
我 运行 这段代码有效,但是当 $(".box3").click 时,$(".box1") 不淡入和动画,它直接显示在 window。等$(".box2") 和$(".box3") 第二次出现问题后
难道淡入和动画只运行一次?我想要 运行 次,但仍然有淡入、淡出和动画效果。
感谢您的回答。
$(function() {
$(".box2,.box3").hide();
$(".box1").click(function() {
$(".box1").animate({
left: "1200px"
}, 1000).fadeOut();
$(".box2").fadeIn();
});
$(".box2").click(function() {
$(".box2").animate({
left: "1200px"
}, 1000).fadeOut();
$(".box3").fadeIn();
});
$(".box3").click(function() {
$(".box3").animate({
left: "1200px"
}, 1000).fadeOut();
$(".box1").fadeIn();
});
})
body {
position: relative;
}
.box1 {
width: 300px;
height: 300px;
background-color: rgb(255, 0, 0);
position: absolute;
top: 300px;
left: 500px;
}
.box2 {
width: 300px;
height: 300px;
background-color: rgb(2, 149, 246);
position: absolute;
top: 300px;
left: 500px;
}
.box3 {
width: 300px;
height: 300px;
background-color: rgb(22, 187, 0);
position: absolute;
top: 300px;
left: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
解释: 由于所有元素都有类似的事件绑定,我制作了一个 commonEvent
函数,它减少了代码。 fadeOut
函数接受一个回调函数作为参数,当 fadeOut
被执行时该函数被执行。单击 .box1
时,left
属性 设置为 1200px
。这就是为什么,我在它的回调函数中将它的值改回 500px
,即初始值。
$(function() {
$(".box2,.box3").hide();
$(".box1").click(function() {
commonEvent($(this), $(".box2"));
});
$(".box2").click(function() {
commonEvent($(this), $(".box3"));
});
$(".box3").click(function() {
commonEvent($(this), $(".box1"));
});
})
function commonEvent(element, other) {
element.animate({
left: "1200px"
}, 1000).fadeOut("normal", () => {
element.css("left", "500px");
})
other.fadeIn();
}
body {
position: relative;
}
.box1 {
width: 300px;
height: 300px;
background-color: rgb(255, 0, 0);
position: absolute;
top: 300px;
left: 500px;
}
.box2 {
width: 300px;
height: 300px;
background-color: rgb(2, 149, 246);
position: absolute;
top: 300px;
left: 500px;
}
.box3 {
width: 300px;
height: 300px;
background-color: rgb(22, 187, 0);
position: absolute;
top: 300px;
left: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
我 运行 这段代码有效,但是当 $(".box3").click 时,$(".box1") 不淡入和动画,它直接显示在 window。等$(".box2") 和$(".box3") 第二次出现问题后
难道淡入和动画只运行一次?我想要 运行 次,但仍然有淡入、淡出和动画效果。
感谢您的回答。
$(function() {
$(".box2,.box3").hide();
$(".box1").click(function() {
$(".box1").animate({
left: "1200px"
}, 1000).fadeOut();
$(".box2").fadeIn();
});
$(".box2").click(function() {
$(".box2").animate({
left: "1200px"
}, 1000).fadeOut();
$(".box3").fadeIn();
});
$(".box3").click(function() {
$(".box3").animate({
left: "1200px"
}, 1000).fadeOut();
$(".box1").fadeIn();
});
})
body {
position: relative;
}
.box1 {
width: 300px;
height: 300px;
background-color: rgb(255, 0, 0);
position: absolute;
top: 300px;
left: 500px;
}
.box2 {
width: 300px;
height: 300px;
background-color: rgb(2, 149, 246);
position: absolute;
top: 300px;
left: 500px;
}
.box3 {
width: 300px;
height: 300px;
background-color: rgb(22, 187, 0);
position: absolute;
top: 300px;
left: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
解释: 由于所有元素都有类似的事件绑定,我制作了一个 commonEvent
函数,它减少了代码。 fadeOut
函数接受一个回调函数作为参数,当 fadeOut
被执行时该函数被执行。单击 .box1
时,left
属性 设置为 1200px
。这就是为什么,我在它的回调函数中将它的值改回 500px
,即初始值。
$(function() {
$(".box2,.box3").hide();
$(".box1").click(function() {
commonEvent($(this), $(".box2"));
});
$(".box2").click(function() {
commonEvent($(this), $(".box3"));
});
$(".box3").click(function() {
commonEvent($(this), $(".box1"));
});
})
function commonEvent(element, other) {
element.animate({
left: "1200px"
}, 1000).fadeOut("normal", () => {
element.css("left", "500px");
})
other.fadeIn();
}
body {
position: relative;
}
.box1 {
width: 300px;
height: 300px;
background-color: rgb(255, 0, 0);
position: absolute;
top: 300px;
left: 500px;
}
.box2 {
width: 300px;
height: 300px;
background-color: rgb(2, 149, 246);
position: absolute;
top: 300px;
left: 500px;
}
.box3 {
width: 300px;
height: 300px;
background-color: rgb(22, 187, 0);
position: absolute;
top: 300px;
left: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>