码迷,mamicode.com
首页 > 其他好文 > 详细

封装动画函数总结,,,如何解决target最终为小数的问题(target-element.offsetLeft>0//<0),,如何解决多次点击按钮事件触发定时器效果的叠加问题?

时间:2020-06-06 18:58:43      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:color   效果   har   math   nim   time   list   ima   封装   

技术图片

Document
<style>
    * {
        padding: 0;
        margin: 0;
    }

    div {
        position: absolute;
        top: 50px;
        left: 0;
        height: 200px;
        width: 200px;
        background-color: pink;

    }


    span {
        position: absolute;
        display: inline-block;
        top: 350px;
        left: 0;
        height: 80px;
        width: 80px;
        background-color: blue;
    }


    button {
        height: 30px;
        width: 120px;
    }
</style>
<script>
    var div = document.querySelector(‘div‘);
    var span = document.querySelector(‘span‘);
    var btn500 = document.querySelector(‘.btn500‘);
    var btn800 = document.querySelector(‘.btn800‘);

    // 封装定时器函数
    function animate(obj, target) {
        // 解决多次点击按钮事件触发定时器效果的叠加bug问题,在每次定时器触发之前先关闭定时器
        clearInterval(obj.timer);
        obj.timer = setInterval(function () {
            // 移动距离变速减速
            var x = (target - obj.offsetLeft) / 10;
            // 三元表达式由target - obj.offsetLeft
            // 根据盒子正向移动还是反向移动进行取整
            x = x > 0 ? Math.ceil(x) : Math.floor(x);
            if (obj.offsetLeft == target) {
                clearInterval(obj.timer);
            }
            else {
                obj.style.left = obj.offsetLeft + x + ‘px‘;
            }

        }, 50);
    }


    btn800.addEventListener(‘click‘, function () {
        animate(div, 800);

    })


    btn500.addEventListener(‘click‘, function () {
        animate(div, 500);

    })
</script>

封装动画函数总结,,,如何解决target最终为小数的问题(target-element.offsetLeft>0//<0),,如何解决多次点击按钮事件触发定时器效果的叠加问题?

标签:color   效果   har   math   nim   time   list   ima   封装   

原文地址:https://www.cnblogs.com/xjt31/p/13055471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!