jquery的animate多次执行后动画速度变慢

发布于 2022-09-03 00:35:01 字数 468 浏览 19 评论 0

问题

我使用animate循环改变element的top值,当mouseenter时,用stop暂停,mouseleave时,继续执行该函数,可是当鼠标划入划出时,动画速度明显减缓,后来用setInterval解决了,可是不知道为什么会发生这中情况。

function doanimate(){
    div.animate({
        top:'450px'
    },1000,'linear',function(){
    div.css('top','0px');
    });
}
div.on('mouseenter mouseleaver',function(e){
    if(e.type == 'mouseenter'){
        div.stop(true);
    }
    else if(e.type =='mouseleave'){
        doanimate();
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱你是孤单的心事 2022-09-10 00:35:01

多次执行 jQuery 动画, 并使用 stop 暂停, 并不是动画变慢, 而是调用 stop 时没有清空动画队列, 导致多个 timeout 来回更新样式, 忽大忽小, 从而看起来动画变慢了.

.stop( [clearQueue ] [, jumpToEnd ] )

stop 默认不会清空队列, 并且跳转到动画结束位置, 两个可选参数默认值都为 false.

改成

.stop(true, true)

试试

参考 http://api.jquery.com/stop/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文