<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{margin: 0;padding: 0;}
.box{width: 200px;height: 200px;background: pink;position: absolute;}
</style>
</head>
<body>
<button id="btn">开始</button>
<div class="box" id="box"></div>
<script>
// 让一个盒子运动,到800停止,速度先快到慢----实现缓冲效果
// 每次加的speed值随着时间越来越小就实现缓冲
var oBox = document.getElementById("box");
// var oBtn = document.getElementById("btn");
var timer=null;
var speed = 30;
clearInterval(timer);
timer = setInterval(function(){
if(oBox.offsetLeft >= 1200){
clearInterval(timer);
}else{
for(var i=1;i<=10;i++){
speed = speed - i;
oBox.style.left = oBox.offsetLeft + speed + "px";
if(speed<=0){
clearInterval(timer);
}
}
}
},30)
</script>
</body>
</html>
可以,不过你要知道speed最后成负数了
遇到什么问题了呢。可以加一个speed==0时clearinterval
姑娘,你好
动画每30毫秒移动一次就行
你可以把这个问题转换成每隔一段时间,物体运动了多少的物理问题
比如使用匀减速直线运动公示S=vt-(at^2)/2,可以省去你的speed变量
更简单的方式是使用现成的动画库,选择一种动效即可。