JavaScript 特效之匀速动画

匀速动画

/**
 * 功能:匀速动画
 * 将传入的元素移动到目标位置
 * 此方法已经解决了元素起始位置位于目标位置的左侧和右侧时的处理办法不同的问题,传入目标位置的正负与其无关
 * 若以元素起始位置为原点,
 * 当target>0时,代表目标位置始终位于x轴正半轴
 * 当target<0时,代表目标位置始终位于x轴负半轴
 * @param ele 元素
 * @param target 目标位置
 */
function animate(ele,target){
    clearInterval(ele.timer);
    //谁的盒子绑定谁的定时器,把定时器作为属性绑定到box上
    ele.timer = setInterval(function () {
        var step = target>ele.offsetLeft ? 15:-15;
        //移动之前,先记录差值再判断,如果移动前就小于步长,那就让他白移动,我们直接赋值。解决抖动问题。
        var val = ele.offsetLeft-target;
        ele.style.left = ele.offsetLeft+step+"px";//注意一定要带单位px!!
        //到了没?如果不够一个步长,就不要继续走了
        if(Math.abs(val)<Math.abs(step)){
            ele.style.left = target + "px";//注意一定要带单位px!!
            clearInterval(ele.timer);
        }
    },10);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值