平滑更改jQuery动画

平滑更改jQuery动画,jquery,animation,performance,Jquery,Animation,Performance,关于我昨晚问的一个问题,只有一个答案,我有一个关于jQuery动画的问题。如果我想在某个时间点(由任意事件决定)退出一个动画,然后以不同的速度开始另一个动画,是否有任何方法可以使该更改不被注意到 换句话说,如果动画开始于4000ms,那么用户移动鼠标,第一个动画退出,第二个动画开始,这个动画开始于2000ms,有没有办法避免在第二个动画开始之前突然出现可怕的停顿 我在元素上使用.stop(true)来停止当前正在运行的任何动画,然后再开始第二个动画,但这没有帮助,.clearQueue()仅在事

关于我昨晚问的一个问题,只有一个答案,我有一个关于jQuery动画的问题。如果我想在某个时间点(由任意事件决定)退出一个动画,然后以不同的速度开始另一个动画,是否有任何方法可以使该更改不被注意到

换句话说,如果动画开始于4000ms,那么用户移动鼠标,第一个动画退出,第二个动画开始,这个动画开始于2000ms,有没有办法避免在第二个动画开始之前突然出现可怕的停顿

我在元素上使用.stop(true)来停止当前正在运行的任何动画,然后再开始第二个动画,但这没有帮助,.clearQueue()仅在事件完成时激发

根据要求,以下是代码:


$(文档).ready(函数(){

$('#innerMainbottom')。悬停(函数(){
$('#innerMainbottom').mousemove(函数(e){
var mouseX=e.pageX-$(this).offset()。左,
宽度=$(this).innerWidth(),//宽度为1000,但要移动的容器为1600,通过溢出隐藏:隐藏
速度=(鼠标宽度)*10,
sliderCont=$('#sliderCont');//这是我要移动的容器

如果(mouseX>=510&&mouseX=0&&mouseX460&&mouseX我发现执行任何类型的jQuery动画最平滑的方法是使用回调函数,并等待动画本身结束。例如,如果您希望向上滑动一个元素,然后淡出,而不是将函数链接在一起,如:

.slideUp().fadeOut();
我发现这很有用

$("#anything").slideUp(1000, function() {
   $(this).fadeOut(1000);
})
生成更平滑的动画


为了更直接地回答您的问题,使用stop()不会生成最平滑的动画“stopping”,因为它实际上会将动画“stopping”(沿动画链的任何位置)切断。您可以使用
.delay()
在动画链之间产生短暂的停顿。

你能发布代码来查看你描述的这种急促动作吗提前感谢!:DThanks dude,但问题是我希望用户能够通过悬停来控制速度。想象一条线,用户悬停的距离越远,动画速度就越快。即使我沿着线选择几个点,并在这些点上加倍速度。现在,我可以轻松地更改动画速度,但停止一个动画乐趣同时开始另一个动作证明臀大肌疼痛。
$("#anything").slideUp(1000, function() {
   $(this).fadeOut(1000);
})