【发布时间】:2023-04-03 23:22:01
【问题描述】:
我做了一个小滑块来循环 3 个图像,我希望每个图像停止 3 秒,然后淡出和淡入下一个,但问题是:
第一个可以停留3秒,但是一旦开始循环,就不会再停3秒了,画面立马变了,为什么不能保持3秒的停留?
这是Demo
var i = 0;
var name = ['Cat', 'Dog', 'Duck'];
function next() {
if (i > 1) {
i = 0;
} else {
i++;
};
$('#loop').fadeOut(1000, function() {
$(this).css('background', 'url("' + i + '.png")').fadeIn(1000);
$('h1').html(name[i]);
});
};
setInterval(next, 3000);
#loop {
width: 300px;
height: 300px;
background: url('0.png');
}
h1 {
padding-top: 310px;
text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="loop">
<h1>Cat</h1>
</div>
【问题讨论】:
-
我在 Firefox 上试用了你的演示,效果很好。您在哪个浏览器中遇到问题?
-
感觉第一张图片后,每张图片都不会停留3秒
-
啊,我明白了,从fadeIn() 开始,图像将出现3 秒,因此fadeIn 和fadeOut 时间是在这3 秒内计算的。由于您的过渡持续 1 秒,因此图像只剩下 1 秒。将间隔时间增加到 5 秒,在 setInterval 之前放 setTimeout(next, 3000);
-
我试试你的想法,添加“setTimeout(next, 3000);”在“setInterval(next, 5000);”之前,但是第二张图片停留不到1秒,那么另一张很好,为什么第二张不能停留3秒?
-
最好的办法是使用 promise:stackoverflow.com/a/27660144/1414562
标签: javascript jquery html css