那个for循环不能放在那里吗

img


<!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>
        *{margin0;padding0;}
        .box{width200px;height200px;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变量
更简单的方式是使用现成的动画库,选择一种动效即可。