• 缓存动画4-回调


     1  <script>
     2        window.addEventListener('load', function (ev) {
     3            var box = myTool.$('box');
     4 
     5            myTool.$('btn').addEventListener('click', function () {
     6                buffer(box, { 'left': 900, 'top': 500, 'width': 600, 'height': 400}, function () {
     7                    buffer(box, { 'left': 100, 'top': 100, 'width': 50, 'height': 50}, function () {
     8                        buffer(box, { 'left': 600, 'top': 500, 'width': 300, 'height': 400}, null)
     9                    });
    10                });
    11            });
    12        });
    13 
    14        /**
    15         *  缓动动画函数
    16         * @param {Object}eleObj
    17         * @param {Object}json
    18         * @param {Function}fn
    19         */
    20        function buffer(eleObj, json, fn) {
    21            // 1.1 先清后设
    22            clearInterval(eleObj.timer);
    23 
    24            // 1.2 定义变量
    25            var speed = 0, begin = 0, target = 0, flag = false;
    26 
    27            // 1.3 设置定时器
    28            eleObj.timer = setInterval(function () {
    29                // 标志 (标签的所有属性有没有执行完动画)
    30                flag = true;
    31                for(var key in json){
    32                    // 获取要做动画属性的初始值
    33                    begin = parseInt(myTool.getStyleAttr(eleObj, key)) || 0;
    34                    target = parseInt(json[key]);
    35                    console.log('begin:' + begin);
    36 
    37                    // 2.3 求出步长
    38                    speed = (target - begin) * 0.2;
    39                    speed = (target > begin) ? Math.ceil(speed) : Math.floor(speed);
    40 
    41                    // 2.4  动起来
    42                    eleObj.style[key] = begin + speed + 'px';
    43 
    44                    // 2.5 判断
    45                    if (begin !== target) {
    46                        flag = false;
    47                    }
    48                }
    49 
    50                // 1.4 清除定时器
    51                if(flag){
    52                    clearInterval(eleObj.timer);   //解决了只要一个值满足就可以的情况
    53                    // 开启另一组动画
    54                   /* if(fn){
    55                        fn();
    56                    }*/
    57                   fn && fn();
    58                }
    59            }, 40);
    60        }
    61    </script>
  • 相关阅读:
    redhat 6安装详解
    使用pidstat查看进程资源使用情况
    (转)调优 DB2 UDB v8.1 及其数据库的最佳实践
    (转)LVS安装使用详解
    (转)[小工具] Linux下列格式化工具
    (转)zabbix3.4使用percona-monitoring-plugins监控mysql
    (转)zabbix之生产案例
    (转)CentOS7 LVM添加硬盘及扩容
    (转)计算机网络基础知识总结
    (转)网络基础之网络协议篇
  • 原文地址:https://www.cnblogs.com/zhangzhengyang/p/11217280.html
Copyright © 2020-2023  润新知