demo代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
width: 100px;
height: 100px;
background: yellow;
border: 1px solid #000;
margin-top: 20px;
position: relative;
}
</style>
</head>
<body>
<button>运动到200</button>
<button>运动到400</button>
<div>盒子</div>
<script>
var btn1 = document.getElementsByTagName("button")[0];
var btn2 = document.getElementsByTagName("button")[1];
var box = document.getElementsByTagName("div")[0];
var timer = null;
btn1.onclick = function(){
animation(400,box);
};
btn2.onclick = function(){
animation(800,box);
}
function animation(target,ele){
clearInterval(timer);
timer = setInterval(function(){
var val = target - ele.offsetLeft;
var speed = target > ele.offsetLeft ? Math.ceil((target-ele.offsetLeft)/10) : Math.floor((target-ele.offsetLeft)/10);
ele.style.left = ele.offsetLeft + speed + "px";
if(Math.abs(Math.ceil(val))<Math.abs(speed)){
ele.style.left = target + "px";
clearInterval(timer);
};
},30);
}
</script>
</body>
</html>