基于jQuery的连续hover触发重复动画

本文来源于 捷搜索

问题:

当我们设置hover实现动画效果的时候,我们把鼠标快速反复在目标元素移来移去,会发现鼠标最后离开后,动画依然在进行很多次,有时会导致动画错乱。

原因&办法:

之所以会出现这种情况,是因为我们每次触发hover时都会执行一次动画,当我们来回这样快速移动到目标元素上时并反复操作,这时会导致动画重复多次,而由于我们移动到目标元素上时比较快速的,这就导致,上一次动画未结束,这次动画就紧接着来了,所以会导致动画的错乱。

我们解决这一情况的原理是:当我们触发hover时先清空之前所有的动画,并使当前正在执行的动画立马完成。

解决:

jQuery的stop方法可以解决上述的问题,

stop([clearQueue],[gotoEnd]):

第一个参数[clearQueue]: [false,true], 是否清除队列,若为true,则清空队列,立即结束动画;

第二个参数[gotoEnd]: [false,true], 当前正在执行的动画是否立即完成,若为true,则完成队列,立即完成动画;

在这里我们把两个参数都设置为true,当有多个动画时,再次触发hover执行动画时,会清空所有的动画队列 ,并且使正在执行的动画立即完成,然后再进行本次动画,这样就不会导致动画错乱。

$(".img").hover(function(){
    $(this).stop(true,true).animate({width:'150px'},800);
},function(){
    $(this).stop(true,true).animate({width:'100px'},800);
});
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • show() and hide() 1. show()和hide() show()方法和hide()方法是jQue...
    DHFE阅读 1,657评论 0 0
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 4,913评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 5,222评论 0 2
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,867评论 8 265
  • 2017,知识付费的风越吹越猛。我也“跟风”学了许多付费课。最喜欢的,对我改变最大的是《通往财富自由之路》。当我在...
    蓝小白Joyce阅读 1,878评论 2 4