1. 程式人生 > >JS緩動動畫

JS緩動動畫

JS的緩動動畫的實現,就是通過一個公式來實現的:

begin = begin + (end - begin) * 0.2;

這個公式裡面,begin就是動畫開始的位置,end就是動畫結束的位置,0.2就是個緩動係數,不是固定值,不超過1就行,係數越大,動畫運動就越快,這個看著貌似挺高大上,其實沒啥,就是控制了begin等於end的速度,它的終止條件就是beng===end,放一個例項:

<script>
    window.onload = function () {
        // 1. 獲取廣告頭部的高度
        var offset_top = $('aside').offsetTop;

        // 2. 監聽視窗的滾動
        var begin = 0, end = 0, timer = null;
        window.onscroll = function () {
            // 2.0 清除定時器
            clearInterval(timer);

            // 2.1 獲取滾動的高度
            var scroll_top = scroll().top;
            end = offset_top + scroll_top;

            // 2.2 緩動動畫
            timer = setInterval(function () {
                 begin = begin + (end - begin) * 0.2;
                 $("aside").style.top = begin + "px";

                console.log(begin, end);
                // 清除定時器
                if(Math.round(begin) === end){
                    clearInterval(timer);
                }

            }, 20);
        }
    }
</script>