Javascript——变速动画函数封装

    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            margin-top: 20px;
            width: 200px;
            height: 100px;
            background-color: green;
            position: absolute;
            left: 0;
            top: 0;
        }
    </style>
......
<input type="button" value="移动到400px" id="btn1" />
<input type="button" value="移动到800px" id="btn2" />
<div id="dv">
<script src="common.js"></script>
    <script>
        //点击按钮移动div
        my$("btn1").onclick=function(){
        animate(my$("dv"),400);
        };
        my$("btn2").onclick=function(){
        animate(my$("dv"),800);
        };
     
        function animate(element,target){
            //清理定时器
            clearInterval(element.timeId);
            element.timeId=setInterval(function(){
                //获取元素当前位置
                var current=element.offsetLeft;
                //移动的步数
                var step=10;
                step=target>current?step: -step;
                current+=step;
                if(Math.abs(current-target)>Math.abs(step)){
                    element.style.left=current+"px";
                }else{
                    clearInterval(element.timeId);
                    element.style.left=target+"px";
                }
            },20);
        }
    </script>
</div>

封装变速动画

        匀速动画
        function animate(element,target){
            //清理定时器
            clearInterval(element.timeId);
            element.timeId=setInterval(function(){
                //获取元素当前位置
                var current=element.offsetLeft;
                //移动的步数
                var step=(target-current)/10;
                step=step>0?Math.ceil(step):Math.floor(step);
                current+=step;
                element.style.left=current+"px";
                if(current==target){
                    //清理定时器
                    clearInterval(element.timeId);
                }
                //测试代码:
                console.log("目标位置:"target+,当前位置: "+current+",每次移动步数:"+step");
            },20);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值