封装变速动画函数

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        #dv {
            width: 200px;
            height: 200px;
            background-color: cyan;
            position: absolute;
        }
    </style>
</head>
<body>
<button id="btn">移动到400</button>
<button id="btn1">移动到800</button>
<script src="common.js"></script>
<div id="dv"></div>
<script>
    function f1(element,json,fn) {
        //清除定时器
        clearInterval(element.timeId)
        //添加定时器
        element.timeId=setInterval(function () {
            //假设到达目标位置
            var flag=true;
            for (var attr in json){
                //获取元素的当前位置
                var current = parseInt(getStyle(element,attr));
                //目标的值
                var target=json[attr];
                //移动的步数
                var step=(target-current)/10;
                //判断左右移动
                step=step>0?Math.ceil(step):Math.floor(step);
                //移动
                current+=step;
                //赋值
                element.style[attr]=current+"px";
                //如果有一个当前的位置,不等于目标位置,让flag=false
                if (current!=target){
                    flag=false
                }
            }
            //循环完后,如果flag为true, 这证明到达目标位置
            if (flag){
                clearInterval(element.timeId);
                //判断如果用户传了fn, 则调用
                if (fn){
                    fn();
                }
            }
        },20)
    }



    my$("btn").onclick = function () {
        f1(my$("dv"), {"width": 400, "height": 400, "left": 500, "top": 300}, function () {

            f1(my$("dv"), {"width": 30, "height": 30, "left": 600, "top": 400}, function () {

                f1(my$("dv"), {"width": 100, "height": 50, "left": 300, "top": 0})
            })
        })
    }
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值