美文网首页
jQuery的动画效果与动画队列

jQuery的动画效果与动画队列

作者: 郑宋君 | 来源:发表于2018-11-18 16:08 被阅读0次

    基础效果

    .hide([duration ] [,easing ] [,complete ])

    用于隐藏元素,没有参数的时候等同于直接设置 display 属性

    $('.target').hide()
    //等同于
    $('.target').css('display', 'none')
    

    .show([duration ] [,easing ] [,complete ])

    用于展示元素,用法和hide()一样,但是效果是相反的

    $('.btn').on('click',function(){
      $('.target').show()
    })
    

    .toggle([duration ] [,easing ] [,complete ])

    用于切换元素的展示和隐藏,用法和上面两个api一样

    $('.btn').on('click',function(){
      $('.target').toggle()
    })
    

    渐变

    .fadeIn( [duration ] [, easing ] [, complete ] )

    用于渐变显示元素

    $('#fadeIn').click(function(){
      $('#box').fadeIn(1000)
    })
    

    .fadeOut( [duration ] [, easing ] [, complete ] )

    用于渐变隐藏元素

    $('#fadeOut').click(function(){
      $('#box').fadeOut(1000)
    })
    

    .fadeTo( duration, opacity [, easing ] [, complete ] )

    调整匹配元素的透明度,方法通过匹配元素的不透明度做动画效果

    $('#fadeTo').click(function(){
      $('#box').fadeTo(1000,0.5)
    })
    

    ..fadeToggle( [duration ] [, easing ] [, complete ] )

    通过匹配的元素的不透明度动画,来显示或隐藏它们,方法执行匹配元素的不透明度动画。当被可见元素调用时,元素不透明度一旦达到0,display样式属性设置为none ,所以元素不再影响页面的布局。

    $('#fadeToggle').click(function(){
      $('#box').fadeToggle(1000)
    })
    

    滑动

    .slideDown( [duration ] [, easing ] [, complete ] )

    用滑动动画显示一个匹配元素,方法将给匹配元素的高度的动画,这会导致页面的下面部分滑下去,弥补了显示的方式

    $('#slideDown').click(function(){
      $('#box').slideDown(1000)
    })
    

    .slideUp( [duration ] [, easing ] [, complete ] )

    用滑动动画隐藏一个匹配元素,方法将给匹配元素的高度的动画,这会导致页面的下面部分滑上去,当一个隐藏动画后,高度值达到0的时候,display 样式属性被设置为none,以确保该元素不再影响页面布局。 display 样式属性将被设置为none,以确保该元素不再影响页面布局。

    $('#slideUp').click(function(){
      $('#box').slideUp(1000)
    })
    

    .slideToggle( [duration ] [, easing ] [, complete ] )

    切换滑上滑下操作

    $('#slideToggle').click(function(){
      $('#box').slideToggle(1000)
    })
    

    自定义动画

    .animate( properties [, duration ] [, easing ] [, complete ] )

    properties是一个css属性和值的对象,动画将根据这组对象移动

    $('#clickme').click(function() {
      $('#book').animate({
        opacity: 0.25,
        left: '+=50',
        height: 'toggle'
      }, 5000, function() {
        // Animation complete.
      });
    });
    

    动画队列

    如果一个元素要进行很多的Jquery动画效果,代码如下,我们写代码容易进入一个很难受的回调地狱里面代码如下

    <body>
      <div class="box"></div>
      <button id="all">动画</button>
      <button id="all-smill">简化代码</button>
    </body>
    <script>
    $('#all').on('click',function(){
      $('.box').show(600,function(){
         $('.box').hide(600,function(){
           $('.box').fadeOut(5000,function(){
             $('.box').slideDown(1000,function(){
               $('.box').slideUp(1000,function(){
                 $('.box').slideToggle(3000,function(){
                   console.log('所有动画执行完毕')
                 })
               })
             })
           })
         })
      })
    })
    </script>
    

    这样的代码看起来不仅仅不好看,而且也不好后期维护,我们根据jQuery的特性,可以改写代码为

    $('#all-smill').on('click',function(){
      $('.box').show(1000)
               .hide(1000)
               .fadeOut(1000)
               .slideDown(1000)
               .slideUp(1000)
               .slideToggle(1000,function(){
          console.log(‘动画执行完毕’)
      })
    console.log('动画执行开始')
    })
    

    这样代码不仅仅简洁了很多,而且看起来也很舒服
    说到这里,我们处理了回调地狱这个问题,我们也说一说关于jQuery的动画队列的问题
    队列讲究先进先出
    按照上面的代码,我们可以理解成我们的队列里面装入了jQuery函数

    1.show()
    2.hide()
    3.fadeOut()
    4.slideDown()
    5.slideUp()
    6.slideToggle()
    

    当装入好了以后,我们首先执行console.log('动画执行开始')这条语句,然后开始执行按照顺序执行队列里面的动画show() ....
    这就是动画队列

    .clearQueue

    清除动画队列中未执行的动画

    .finish

    清除动画队列中未执行的动画,并使选择对象达到动画队列的最后一帧

    .stop( [clearQueue ] [, jumpToEnd ] )

    相关文章

      网友评论

          本文标题:jQuery的动画效果与动画队列

          本文链接:https://www.haomeiwen.com/subject/szjgfqtx.html