JS緩動動畫
阿新 • • 發佈:2018-11-30
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>