JavaScript動(dòng)畫2-緩沖運(yùn)動(dòng)

系列文章導(dǎo)航

JavaScript動(dòng)畫1-速度動(dòng)畫
JavaScript動(dòng)畫2-緩沖運(yùn)動(dòng)
JavaScript動(dòng)畫3-多物體運(yùn)動(dòng)
JavaScript動(dòng)畫4-任意屬性值
JavaScript動(dòng)畫5-鏈?zhǔn)竭\(yùn)動(dòng)
JavaScript動(dòng)畫6-同時(shí)運(yùn)動(dòng)
所有源代碼

緩沖運(yùn)動(dòng)

上一篇文章中,我們說的動(dòng)畫效果中速度都是恒定的,一直保持不變。但現(xiàn)實(shí)生活中,物體運(yùn)動(dòng)的速度往往是變化的,比如火車進(jìn)站的時(shí)候,速度越來越慢,最終速度降為0才停下來。

這在動(dòng)畫中叫做緩沖。

那么在JavaScript中怎么實(shí)現(xiàn)緩沖呢?很簡單,只要每次運(yùn)動(dòng)的時(shí)候把速度變化一下就可以了。這種變化可以有一個(gè)參考,比如我們這里就是根據(jù)元素與目標(biāo)終點(diǎn)的距離來變化速度的,距終點(diǎn)越近,速度越慢。

還是跟上一節(jié)同樣的HTML結(jié)構(gòu),只不過元素的id換了一下:

<div id="div3">
    <span id="share3">分享</span>
</div>
JS動(dòng)畫演示1
//緩沖運(yùn)動(dòng)
(function () {
    var div3 = document.getElementById("div3");
    var timer = null;

    div3.onmouseover = function () {
        startMove(0);
    };
    div3.onmouseout = function () {
        startMove(-200);
    };
    function startMove(targetPosition) {
        clearInterval(timer);

        timer = setInterval(function () {
            var speed = (targetPosition - div3.offsetLeft) / 10;
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
            if (div3.offsetLeft == targetPosition) {
                clearInterval(timer);
            } else {
                div3.style.left = div3.offsetLeft + speed + 'px';
            }
        }, 20);
    }
})();

演示效果如下:

JS動(dòng)畫演示4

是不是很簡單呢?

趕快自己動(dòng)手做一下吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容