如何减慢和停止当前jQuery动画?

如何减慢和停止当前jQuery动画?,jquery,jquery-animate,Jquery,Jquery Animate,jQuery问题。 我已设置动画。块向右移动5000px $(".block").animate({"left": "+=5000px"}, 2000, 'linear'); 我需要的是在单击后缓慢停止此动画: ('#clickme').click(function() { // ... stop $(".block") animation, not immediately, but with some easing }); 使用jQuery可以做到这一点吗?如果您有任何建议,我们将不胜感

jQuery问题。 我已设置动画。块向右移动5000px

$(".block").animate({"left": "+=5000px"}, 2000, 'linear');
我需要的是在单击后缓慢停止此动画:

('#clickme').click(function() {
 // ... stop $(".block") animation, not immediately, but with some easing
});

使用jQuery可以做到这一点吗?如果您有任何建议,我们将不胜感激。

您可以使用.stop()函数立即停止动画:


然而,它确实很难停止。如果你正在制作动画,这将是一个非常突然的停止。

我会在用户单击停止触发器时停止动画,然后启动一个新的动画,让人产生轻松停止的错觉。这里有一个例子:诀窍是调整第二个动画的设置,使事情顺利进行。您将希望结合持续时间和距离,使其与原始动画的速度相融合。

我知道这很古老,但我会这样做:

var stopping = false;
var lastNow = 0;
$(".block").animate({left:"+=5000px"}, {
    step: function(now){ 
        if (stopping) {
            var delta = lastNow - now;
            $(this).stop().animate({ left : "+=" delta * 2 }, 1000, "easeInOutQuad");
            stopping = false;
        }
        lastNow = now;
    }});
要停止,请将
stopping
设置为
true

我尝试了stop(),然后使用+=100参数启动新动画。但这并不顺利。