移动动画的封装之二:解决往回走的问题

<!DOCTYPE html>
<html lang="zh-CN">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title> 移动动画的封装之二:解决往回走的问题 </title>

    <!-- 解决问题:无法往回走的问题

      解决办法:算距离要取绝对值
      判断目标是否大于当前,大于就给10 否则就给-10 -->

    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
            margin-top: 20px;
        }

        #btn {
            display: none;
            float: left;
            margin-right: 5px;
        }
    </style>
</head>

<body>
    <input type="button" value="回到0" id="btn">
    <input type="button" value="移动到400" id="btn1">
    <input type="button" value="移动到800" id="btn2">
    <div class="box"></div>

    <script>
        // 找到元素
        var box = document.querySelector('.box');
        var btn = document.querySelector('#btn');
        // var timerID;
        // 封装方法
        function ben(add) {
            // clearInterval(timerID);
           var timerID = setInterval(function () {

                // 获取一下当前位置
                var box1 = box.offsetLeft;
                // 要用距离 判断是否大于10,大于就走,不大于就直接到目的地
                if (Math.abs(add - box1) > 10) {
                    // 当前位置往前走1步(1步为10像素)
                    box1 += add > box1 ? 10 : -10;
                    box.style.left = box1 + "px";
                } else {
                    //距离不够走一步,就直接到目的地
                    box.style.left = add + "px";
                }
                // 如果到了目的地就停止
                if (add == box1) {
                    clearInterval(timerID);
                }
            }, 20);
        }
        // 添加点击事件
        document.getElementById('btn').onclick = function () {

            btn.style.display = "none";
            ben(0);
        }

        document.getElementById('btn1').onclick = function () {

            ben(400);
            btn.style.display = "block";

        }
        document.getElementById('btn2').onclick = function () {
            ben(800);
            btn.style.display = "block";
        }
    </script>

</body>

</html>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2018年5月14日,中国创造了两大奇迹,一个无腿老人登顶珠峰,一位机长拼死救回全机乘客! 我拿什么来...
    张永红身心灵健康阅读 3,222评论 0 9
  • 似乎逃不出一个人,总在梦里相见,作业夜还带着他妻子闯进了我的梦里,一来便来两次,坐在同一个位置,像在审判我,朝我炫...
    君君之阅读 2,256评论 0 2
  • 1994年夏天,高考结束后,父亲拿到了中学时代最后一封成绩单,全县第三名的成绩在很多人眼里那简直就是命运之神赏赐的...
    小肥燕Angel阅读 3,081评论 2 2
  • 人生,无需太多理由,也无需太多解释。工作再累,也不要抱怨,因为没有人无条件替你干;生命再短,也不要随意作践,因为没...
    罗掌柜real阅读 1,514评论 0 0