在循环中加载许多 JQuery 个动画,但在循环停止之前阻止任何动画开始
Load many JQuery animations in loop, but prevent any from starting until loop stops
我有代码,我在其中对许多跨度进行动画处理,使它们的总宽度为 div 的 100%。问题在于 jQuery 在循环的每次迭代中开始动画,这决定了特定跨度的长度。例如:
for (var i = 0; i < spans.length; i++) { // could be 500+
$(spans[i]).animate({
width: SOME_NUMBER
}, {
duration: ANIMATION_DURATION
});
}
}
我 运行 遇到的问题是,如果跨度 1 的宽度占总 div 的 50%,它将在其他跨度开始之前开始显着扩展到该宽度缩小。我最终得到的是大多数动画的总宽度 > 100%,并且由于它们并不完全适合,所以跨度的总环绕。即使我将动画设置为线性而不是缓动,也会发生这种情况。然而,一旦动画结束,它们都会在我想要的地方结束。
我的问题是:
A) 有没有办法强制 none 的动画开始直到循环结束,然后同时开始它们?
B) 是否有其他方法可以确保总宽度在任何时间点都不会 > 100%?
这是一个 fiddle 演示我想要的样子,但是,由于有数百个跨度,它的动画速度不够快,无法再像这样:
循环不是异步的,因此所有动画同时开始。这更多是性能问题或缓和问题。你应该使用 CSS 动画而不是 jQuery。这样,它会更流畅。
换句话说,在CSS和.css( 'width', SOME_NUMBER )
中使用transition: width .5s
我有代码,我在其中对许多跨度进行动画处理,使它们的总宽度为 div 的 100%。问题在于 jQuery 在循环的每次迭代中开始动画,这决定了特定跨度的长度。例如:
for (var i = 0; i < spans.length; i++) { // could be 500+
$(spans[i]).animate({
width: SOME_NUMBER
}, {
duration: ANIMATION_DURATION
});
}
}
我 运行 遇到的问题是,如果跨度 1 的宽度占总 div 的 50%,它将在其他跨度开始之前开始显着扩展到该宽度缩小。我最终得到的是大多数动画的总宽度 > 100%,并且由于它们并不完全适合,所以跨度的总环绕。即使我将动画设置为线性而不是缓动,也会发生这种情况。然而,一旦动画结束,它们都会在我想要的地方结束。
我的问题是:
A) 有没有办法强制 none 的动画开始直到循环结束,然后同时开始它们?
B) 是否有其他方法可以确保总宽度在任何时间点都不会 > 100%?
这是一个 fiddle 演示我想要的样子,但是,由于有数百个跨度,它的动画速度不够快,无法再像这样:
循环不是异步的,因此所有动画同时开始。这更多是性能问题或缓和问题。你应该使用 CSS 动画而不是 jQuery。这样,它会更流畅。
换句话说,在CSS和.css( 'width', SOME_NUMBER )
transition: width .5s