美文网首页webAPI
移动动画的封装之终极封装:解决多个元素会互相影响的问题

移动动画的封装之终极封装:解决多个元素会互相影响的问题

作者: 椋椋夜色 | 来源:发表于2019-05-13 21:07 被阅读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>

    相关文章

      网友评论

        本文标题:移动动画的封装之终极封装:解决多个元素会互相影响的问题

        本文链接:https://www.haomeiwen.com/subject/qmhdaqtx.html