其他分享
首页 > 其他分享> > 运动

运动

作者:互联网

运动概述

开启定时器 --- setInterval()--使物体运动 / setTimeout()
清除定时器 --- clearInterval()--使运动停止 / clearTimeout
在定时器过程中不断更改需要改变的值(如: 位置left/top, 宽高width/height,透明度opacity:0.9,filter:alpha(opacity=90)等

匀速运动

匀速运动: 让物体进行匀速运动
通过改变的值, 每次都是一样的来控制对应的元素匀速运动

示例:

<style>
        div{
            width: 100px;
            height: 100px;
            background-color: orange;
            position: relative;
        }
    </style>

<body>
    <button>开始匀速运动</button>
    <div></div>

    <script>
        //1. 获取对应的按钮以及相关的div
        var btn = document.querySelector('button');
        var content = document.querySelector('div');

        //2. 给按钮添加对应的点击事件
        btn.onclick = function(){
            //3. 在点击事件里面, 控制对应div的left值的改变
            //3.1 利用定时器在对应的事件里面, 每次更改一部分的left的值
            var timer = setInterval(()=>{
                var left = parseInt(getStyle(content).left);
                content.style.left = left + 10 +"px";

                //3.2 当我们的left值达到了对应的位置的时候就清除定时器
                if(left == 500){
                    clearInterval(timer);
                }
            }, 100)
        }
        //获取对应的样式方法
        function getStyle(el){
            if(window.getComputedStyle){
                return window.getComputedStyle(el);
            }
            //兼容IE
            return el.currentStyle;
        }
        
    </script>
    
</body>

缓冲运动

通过改变的值, 先改的值比较大, 后面改的比较小, 来达到对应的匀速运动

<style>
        div{
            width: 100px;
            height: 100px;
            background-color: orange;
            position: relative;
        }
    </style>
<body>
    <button>开始缓冲运动</button>
    <div></div>

    <script>
        //缓冲运动的核心就是对应的值的变化越来越少
        //1. 获取对应的按钮以及相关的div
        var btn = document.querySelector('button');
        var div = document.querySelector('div');

        //2. 给按钮添加对应的点击事件
        btn.onclick = function(){
            //3. 控制div的变化, 变化的值越来越小
            //3.1 定时器控制对应的div的left值发生变化
            var timer = setInterval(()=>{
                var currentLeft = parseFloat(getStyle(div).left);

                //距离越来越小(防止无限取小数)
                var step = (500 - currentLeft) / 10 > 1 ? (500 - currentLeft) / 10 : 1;
                div.style.left = currentLeft + step + "px";

                //3.2 到达目标位置后, 清除对应的定时器
                //写大于的问题为他可能是小数, 小数相加可能会大于目标值
                if(currentLeft >= 500 - step){
                    console.log("结束了");
                    clearInterval(timer)
                }
            }, 100)
        }
        //获取对应的样式方法
        function getStyle(el){
            if(window.getComputedStyle){
                return window.getComputedStyle(el);
            }
            //兼容IE
            return el.currentStyle;
        }
        
    </script>
    
</body>

 

标签:el,定时器,div,var,运动,对应,left
来源: https://www.cnblogs.com/huanglidan/p/16410791.html