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>

    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: #f00;
            position: absolute;
            margin-top: 10px;
        }

        .blue {
            background-color: #00f;
            top: 150px;
        }
    </style>

</head>

<body>
    <!-- 
        解决的是先点移动红,再点移动蓝,会把红色计时器给停止掉

        解决办法:让自己只能停自己的计时器
                不要用全局变量,而是停自己的timerID,以及把新的timerID存在自己身上
     -->
    <input type="button" value="移动蓝色到400" id="btn">
    <input type="button" value="移动红色到1200" id="btn1">
    <input type="button" value="移动蓝色到800" id="btn2">

    <div class="red"></div>
    <div class="blue"></div>

    <script>
        //找到div
        var red = document.querySelector('.red');
        var blue = document.querySelector('.blue');

        function ben(add1, add2) {
            clearInterval(add1.timerID);
            add1.timerID = setInterval(function () {
                var add = add1.offsetLeft;
                if (Math.abs(add2 - add) > 10) {
                    add += add2 > add ? 10 : -10;
                    add1.style.left = add + "px";
                } else {
                    add1.style.left = add2 = "px";
                }
                if (add == add2) {
                    clearInterval(add.timerID);
                }
            }, 20)

        }

        // 加点击事件

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

            ben(red, 1200);
        };

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

            ben(blue, 800);
        };
        document.getElementById('btn').onclick = function () {

            ben(blue, 400);
        };
    </script>

</body>

</html>

上一篇下一篇

猜你喜欢

热点阅读