webAPI

移动动画的封装之一:移动不同距离的问题

2019-05-13  本文已影响0人  椋椋夜色

<!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>

    <!-- 根据封装的思想:相同代码,好多地方要用,就封装成函数

    封装步骤:
    1.直接把相同代表当函数体放进去
    2.不能写死的数据,当参数传进来 -->
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: rgb(245, 2, 2);
            margin-top: 20px;
            position: absolute;
        }
    </style>

</head>

<body>
    <input type="button" value="移动到400" id="btn1">
    <input type="button" value="移动到800" id="btn2">
    <div class="box"></div>
    <script>
        // 找到元素
        var box = document.querySelector('.box');
        // 添加点击事件
        document.getElementById('btn1').onclick = function () {
            // 调用方法
            ben(400);
        }
        document.getElementById('btn2').onclick = function () {
            ben(800);
        }

        // 封装方法
        function ben(add) {
            // 添加计时器
            var timerID = setInterval(function () {
                // 获取一下当前位置
                var box1 = box.offsetLeft;
                // 要用距离 判断是否大于10,大于就走,不大于就直接到目的地
                if ((add - box1) > 10) {
                    // 当前位置往前走1步(1步为10像素)
                    box1 += 10
                    box.style.left = box1 + "px";
                } else {
                    //距离不够走一步,就直接到目的地
                    box.style.left = add + "px";
                }
                // 如果到了目的地就停止
                if (add == box1) {
                    clearInterval(timerID);
                }
            }, 20)
        }
    </script>

</body>

</html>

上一篇下一篇

猜你喜欢

热点阅读