javaScript之JS运动

1. 匀速运动
原理:从头到尾一直保持一个速度,即每次运动相同的距离,也称为平滑运动。
分析:①实现匀速运动效果,我们先设置元素样式,然后通过 document.getElementById(id)获取到对应的id节点元素。
②关闭上一次定时器
③定义speed速度(可以随意定义运动的速度值)
④设置运动和停止分开

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
        	//css样式设置
            *{margin: 0px; padding: 0px;}
            #div1{width: 100px; height: 100px; background-color: red; position: absolute; left: 0px; top: 200px;}
        </style>
        <script>
            window.onload = function (){
                var oBtn = document.getElementById("btn1");//获取btn1元素节点
                var oDiv = document.getElementById("div1");//获取div1元素节点

                oBtn.onclick = function(){
                    clearInterval(timer);//关闭上一次定时器
                    var speed = 8;//设置速度为8

                    var timer = setInterval(function(){//记录定时器返回值,设置定时器,30ms运动一下
                        if(oDiv.offsetLeft >= 500){
                            clearInterval(timer);//如果运动到目的值,关闭定时器
                        }else{
                            oDiv.style.left = oDiv.offsetLeft + speed + "px";//运动方式
                        }
                    },30);
                }
            }
        </script>
    </head>
    <body>
        <button id = 'btn1'>开始运动</button>
        <div id = 'div1'></div>
    </body>
</html>

2. 减速运动
原理:也被称为缓冲运动,指的是远快近慢,然后慢慢的停止在目标点。离目标点距离越远运动越快,离目标越近速度越慢。
分析:根据距离的远近,调整运动值的大小。
计算公式:距离=(目标值-当前值)/缩放比例

var o=document.getElementByTagName('div')[0];
o.onclick=function(){
var timer=setInterval(function(){
var cur=parseInt(getStyle(o,'left'));
var speed=(500-cur)/10; //速度=(目标值-当前值)/缩放比例
if(cur=500){
clearInterval(timer);
o.style.left=speed+'px';
}
},30)
}

注意:为了代码能实现先快后慢的效果,打断点检测,发现到不了终点,一直是491,定时器也停不下来,因为当cur=491的时候,speed=0.9,后面设置的div的left值是491.9,无限循环。
为了结局这种问题,速度要网上取整,不出现小数问题就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值