元素定时器移动(move.js)

因博客内容缺失,无法提炼关键信息形成摘要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//ele——要移动的元素
//cssprop——要改变的css样式
//targetval——目标值
//totaltime——耗时时间(单位是毫秒)

//示例:move(box,"left",window.innerWidth,3000);
function move(ele,cssprop,targetval,totaltime){
    //获取元素当前的属性值
    var currentValue = parseInt(getStyle(ele)[cssprop]);
    //总路程
    var distance =  targetval-currentValue;
    //总路程/总时间=速度(求出 每毫秒的速度)
    var speed = distance/totaltime;
    /**
     * 由于定时器是每隔30毫秒,变化一次,speed应该等于  xxx像素/30毫秒
     * so~~~~
     * speed = distance/totaltime * 30; 
     */
    speed *= 30;
    //每次开启新的定时器之前,先关闭之前的定时器
    clearInterval(ele.timer);

    ele.timer = setInterval(function(){
        //获取当前的值
        var currentValue = parseInt(getStyle(ele)[cssprop]);
        //修改元素对应的CSS属性
        ele.style[cssprop] = currentValue+speed+"px";

        //获取修改过后的当前值
        var updatedCurrentValue = parseInt(ele.style[cssprop]);

        //判断当前值是否跟目标值,已经接近,相差不到0.5
        if( Math.abs( updatedCurrentValue - targetval) < 0.5) {
            //让元素直接等于目标值(仅仅只是为了解决小数点的误差,这句代码可以没有)
            ele.style[cssprop] = targetval + "px";
            //结束定时器
            clearInterval(ele.timer);
        }
    }, 30);
}
//获取非行内样式
function getStyle(ele){
    if(ele.currentStyle) {
        return ele.currentStyle;
    } else {
        return getComputedStyle(ele);
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值