zoukankan      html  css  js  c++  java
  • jQuery中动画animate(下)

    jQuery中动画animate(下)

    animate在执行动画中,如果需要观察动画的一些执行情况,或者在动画进行中的某一时刻进行一些其他处理,我们可以通过animate提供的第二种设置语法,传递一个对象参数,可以拿到动画执行状态一些通知

    .animate( properties, options )

    options参数

    • duration - 设置动画执行的时间
    • easing - 规定要使用的 easing 函数,过渡使用哪种缓动函数
    • step:规定每个动画的每一步完成之后要执行的函数
    • progress:每一次动画调用的时候会执行这个回调,就是一个进度的概念
    • complete:动画完成回调

    其中最关键的一点就是:

    如果多个元素执行动画,回调将在每个匹配的元素上执行一次,不是作为整个动画执行一次

    列出常用的方式:

    $('#elem').animate({
         'toggle',  
        height: 'toggle'
      }, {
        duration: 5000,
        specialEasing: {
           'linear',
          height: 'easeOutBounce'
        },
        complete: function() {
          $(this).after('<div>Animation complete.</div>');
        }
      });

    参考代码:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
        p {
            color: red;
        }
        
        div {
            width: 200px;
            height: 100px;
            background-color: yellow;
            color: red;
        }
        a{
            display: block
        }
        </style>
        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
    </head>
    
    <body>
        <h2>animate(下)</h2>
        <p>慕课网,专注分享</p>
        <div id="aaron">内部动画</div>
        点击观察动画效果:
        <select id="animation">
            <option value="1">动画step动画</option>
            <option value="2">动画progress回调</option>
        </select>
        <a></a>
        <input id="exec" type="button" value="执行动画">
        <script type="text/javascript">
        $("#exec").click(function() {
            var v = $("#animation").val();
            var $aaron = $("#aaron");
            if (v == "1") {
                //观察每一次动画的改变
                $aaron.animate({
                    // 终态
                    height: '50'
                }, {
                    duration :2000,
                    //每一个动画都会调用
                    step: function(now, fx) {
                       $aaron.text('高度的改变值:'+now)
                    }
                })
            } else if (v == "2") {
                //观察每一次进度的变化
                $aaron.animate({
                    height: '50'
                }, {
                    duration :2000,
                    //每一步动画完成后调用的一个函数,
                    //无论动画属性有多少,每个动画元素都执行单独的函数
                    progress: function(now, fx) {
                       $aaron.text('进度:'+arguments[1])
                        // var data = fx.elem.id + ' ' + fx.prop + ': ' + now;
                        // alert(data)
                    }
                })
            } 
        });
        </script>
    </body>
    
    </html>

    step:function(a,b)表示每个动画的每一步完成之后都要执行函数。
    函数内的两个参数,a表示正在改变的属性值得当前值(例如本例第一个动画的now就表示正在变化的heigh的当前值【并非是height的改变值哦~~】);b表示对原型对象的引用,而这个原型对象包括了很多属性,例如 执行动画的元素elem;动画正在改变的属性prop;正在改变属性的当前值:now;等等等等。
    可以尝试将$aaron.text('高度的改变值:'+now)改为 +fx.elem,或者是 ++fx.prop 观察动画后的变化,就能差不多理解啦~~

  • 相关阅读:
    简单验证用户输入身份证号和手机号
    伸展树(Splay Tree)
    AVL树
    Size Balanced Tree(节点大小平衡树)
    Treap
    可持久化线段树(主席树)
    划分树
    归并树
    zkw线段树
    莫比乌斯反演
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7499977.html
Copyright © 2011-2022 走看看