使用setTimeout实现动画

2017-03-13  本文已影响0人  阿九是只大胖喵
    var oBox = document.getElementById('box');
    var maxLeft = utils.win('clientWidth') - oBox.offsetWidth;
    var step = 5;
    var timer = null;

    // 使用递归思想完成setTimout的轮询动画:
    // 每一次在执行动画之前,首先把上一次设置的那一个没有用的定时器清除,以节约内存
    function move() {
        window.clearTimeout(timer);
        var curLeft = utils.css(oBox, 'left');

        if (curLeft + step >= maxLeft) { // 边界判断: 加上步长计算
            utils.css(oBox, 'left', maxLeft);
            return;
        }

        curLeft += step;
        utils.css(oBox, 'left', curLeft);

        timer = window.setTimeout(move, 10);
    }

    move();
上一篇 下一篇

猜你喜欢

热点阅读