欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单的动画函数封装(2)

程序员文章站 2022-05-30 13:46:35
...
<div></div>
    <!-- <span></span> -->
    <button class="btn1">点击500</button>
    <button class="btn2">点击800</button>
 div{
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
            top: 0;
            left: 0;
            margin-top: 100px;
        }
        /* span{
            display: block;
            width: 50px;
            height: 50px;
            background-color: gold;
            margin-top: 200px;
            position: absolute;
            top: 0;
            left: 0;
        } */
    <script>
        // 创建简单的动画函数封装效果(目标对象,目标位置)
    function animate(obj,target,callback){
        //callback回调函数相当于 :callback = function(){},是零时添加的形参

        //清楚时间效果的同时,只留下一个时间效果
        clearInterval(obj.timer);
        obj.timer = setInterval(function(){
            //步长值写道定时器里面(缓动动画效果)
            // var step = Math.ceil((target - obj.offsetLeft) / 10);
            var step = (target - obj.offsetLeft) / 10;
            //当step大于0,就向上取值,要不向下取值,然后在赋值给step
            step = step >  0 ? Math.ceil(step) : Math.floor(step);
            //进行距离的判断
            //如果当前的位置等于目标位置
           if(obj.offsetLeft == target){
               //清楚当前的时间效果
            clearInterval(obj.timer);

            //判断有没有这个回调函数
            if(callback){
                callback();
            }
           }
            //更改的位置等于 = 当前位置 + 每次移动的距离
            obj.style.left = obj.offsetLeft + step + 'px';
        },30)
    }


        var div = document.querySelector('div');
        var btn1 = document.querySelector('.btn1');
        var btn2 = document.querySelector('.btn2');

    btn1.onclick = function(){
        animate(div,500,function(){
            // alert('你好吗?');
            div.style.backgroundColor = 'green';
        });
    }
    btn2.onclick = function(){
        animate(div,800);
    }
    // animate(span,300);

    </script>

实现效果:

简单的动画函数封装(2)

相关标签: 前端网页小项目