jQuery动画队列

假设有一组动画设置如下:

$("#btn).on("click",function(){
$box.hide(1000, function(){
   $box.show(1000, function(){
     $box.fadeOut('slow',function(){
       $box.fadeIn('slow',function(){
         $box.slideUp(function(){
           $box.slideDown(function(){
             console.log('动画执行完毕')
           })
         })
       })
     })
   })
})
});

正常执行情况下点击#btn,会自动执行完所有动画。
而点击多次#btn则会导致当前的动画循环执行,除非关闭浏览器,否则根本停不下来。
解决以上的问题关键在于jQuery动画队列。点击#btn后会自动将绑定的所有动画加载到一个动画队列中,再依次执行,多次点击#btn的效果就是往动画队列中添加新的动画,这样很多动画都存在动画队列中,直到动画队列中都执行完为止。
jQuery提供了一个简单的方法解决动画队列问题:

stop([clearQueue],[jumpToEnd]);
  • clearQueue:如果设置成true,则清空队列。可以立即结束动画。
  • gotoEnd:让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等。
    同时,动画队列是异步的:
$('#ball').slideUp().fadeIn().css({'width':'200px'});

它的执行顺序是元素宽度马上变成200px的同时,slideUp也在执行,slideUp执行完后再执行fadeIn

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 队列 队列的本质是一个数组,对队列的理解先从数组的push和shift开始。push是从数组尾端插入新的元素,sh...
    好奇男孩阅读 4,826评论 0 2
  • jQuery 动画队列 当在jQuery对象上调用动画方法时,如果对象正在执行某个动画效果,那么新调用的动画方法就...
    Zouch在路上阅读 2,118评论 0 1
  • jQuery 动画队列 动画队列的方法: 我们知道jQuery提供了以下几种方法来操作动画队列: stop([cl...
    饥人谷_Wing阅读 3,157评论 0 0
  • queue() queue()方法用来显示在匹配的元素上的已经执行的函数队列 .animate( properti...
    shadow123阅读 1,261评论 0 0
  • queue() queue()方法可以接受一个可选参数,可以得到动画队列的长度。queue()方法可以接受一个回调...
    jrg_tzc阅读 1,648评论 0 1

友情链接更多精彩内容