我在页面上有三个div,我正在尝试使用jQuery .animate宽度函数给它们一个扩展的外观。问题是我不希望它们同时扩展,但我也不希望它们仅在前面的一个完成后才开始。我需要它们在前一个开始几毫秒后开始,这样它们就略微不同步,如果这有意义的话?
我在页面上有三个div,我正在尝试使用jQuery .animate宽度函数给它们一个扩展的外观。问题是我不希望它们同时扩展,但我也不希望它们仅在前面的一个完成后才开始。我需要它们在前一个开始几毫秒后开始,这样它们就略微不同步,如果这有意义的话?
您可以在选项中指定不将动画排队:
$('div').animate({"width": 100});
然后,您可以在单独的window.setTimeout
调用中运行此代码以分散效果。
$('.box').each(function(i){ // 'i' = index
var spd = 700; // set speed (animation/delay) time
var dly = spd*i; // 700*0 = 0 ; 700*1 = 700 .....
$(this).delay(dly).animate({width: 500 },spd); // now you have proper delays.
});
$('.box').each(function(i){
var dly = 400*i; // delay time is less than...
$(this).delay(dly).animate({width: 200},800); // the animation time
});
并在几行中完成整个过程。
令人难以置信的是,在我第一次回答后1小时进行Q编辑后,上述内容变成了“-1”。
不要紧,在这里用几行代码就可以了。
顺便说一句,上面的解释非常好,任何人都可以在几秒钟内修复它以获得最佳结果。 方法 是关键。谢谢!;)
// Start animation 1
setTimeout(function {
// Start animation 2
}, 100);
setTimeout(function {
// Start animation 3
}, 200);
each()
和delay()
函数:$("divs").each(function(index){
$("this").delay(index*200).animate({"width":100},500)
})
这将在上一个动画开始后的200毫秒启动下一个动画。
修复了缺少的参数。