基本思路:使用定时器让物体向右运动,在运动的过程中再不是匀速运动,而是先快后慢,即距离越大,速度越快,距离越小,速度越小,但是到达终点的时候,必须注意要使用向上取整函数Math.ceil()和向下取整函数Math.floor();这样才能够正确无误地到达终点,而不是有出入。
<!DOCTYPE HTML>
<!--
-->
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#div1{
width:100px;
height:100px;
background:red;
position:absolute;
left:0px;//left:600px;
top:50px;
}
#div2{
width:1px;
height:300px;
background:red;
position:absolute;
left:300px;
top:0px;
background:black;
}
</style>
<script>
function startMove(){
var oDiv=document.getElementById('div1');
setInterval(function(){
var speed=(300-oDiv.offsetLeft)/10;
speed=speed>0?Math.ceil(speed):Math.floor(speed);//向上取整
oDiv.style.left=oDiv.offsetLeft+speed+'px';
document.title=oDiv.offsetLeft+','+speed;
},30);
}
</script>
</head>
<body>
<input type="button" value="开始运动" onclick="startMove()"/>
<div id="div1"></div>
<div id="div2">/<div>
</body>
</html>效果图:
初始状态,分别从左出发和从右出发:
没取整导致有出入的情况,title表示终点位置和速度大小:
取整没误差情况:
原文:http://blog.csdn.net/xuan6251237011/article/details/38053295