1. 程式人生 > 程式設計 >javascript實現勻速動畫效果

javascript實現勻速動畫效果

本文例項為大家分享了實現勻速動畫的具體程式碼,供大家參考,具體內容如下

實現思路:

1、主要使用定時函式setInterval()來實現動畫效果
2、可以將動畫封裝成一個函式,這樣可以多個元素呼叫,不用重複寫
3、動畫函式接收引數- - -元素物件、目標偏移量、回撥函式
①函式裡新增一個定時函式,給定時函式一個名字,後面清除定時函式要使用定時函式名
②定時函式裡面處理程式:
a. 給一個固定的每步移動值,設定元素物件的偏移量勻速變化- - -eg: obj.style.left = obj.offsetLeft + 5 + ‘px';
b. 判斷偏移量是否達到目標值,達到的話停止動畫- - -

clearInterval(obj.timer);
並且在動畫停止時判斷是否存在回撥函式,有回撥函式的話執行回撥函式
4、在動畫函式的最前面新增清除定時器函式,清除之前的動畫影響- - -clearInterval(obj.timer);
有時需要點選按鈕後,觸發動畫這種,沒有新增清除的話,重複點選按鈕,動畫效果會疊加,越來越快
5、也可以將動畫函式封裝到檔案中進行引用

小提示:以上只是一種方法,不同動畫效果根據所需進行調整實現方法

程式碼示例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,www.cppcns.com
initial-scale=1.0"> <title>勻速動畫</title> <style> .box { position: relative; width: 1000px; margin-top: 20px; } .xiaohuli { position: absolute; top: 0; left: 0; width: 150px; height: 150px; } .pikaqiu { http://www.cppcns.com
position: absolute; top: 150px; left: 0; width: 200px; height: 150px; } &lt;/style> </head> <body> <button class="btn1">點選移動小狐狸</button> <button class="btn2">點選移動皮卡丘</button> <div class="box"> <img src="images/小狐狸.jpg" alt="script實現勻速動畫效果" class="xiaohuli"> <img src="images/皮卡丘.jpg" alt="javascript實現勻速動畫效果" class="pikaqiu"> </div> <script> var btn1 = document.querySelector('.btn1'); www.cppcns.com var btn2 = document.querySelector('.btn2'); var xiaohuli = document.querySelector('.xiaohuli'); var pikaqiu = document.querySelector('.pikaqiu'); bNPaaMEMRstn1.addEventListener('click',function() { animate(xiaohuli,300); }) btn2.addEventListener('click',function() { animate(pikaqiu,450); }) // 動畫函式 obj動畫物件,target目標左偏移量,callback回撥函式 function animate(obj,target,callback) { clearInterval(obj.timer); obj.timer = setInterval(function() { obj.style.left = obj.offsetLeft + 5 + 'px'; if (obj.offsetLeft >= target) { // 停止動畫 clearInterval(obj.timer); // 如果有回撥函式,執行回撥函式 if (callback) { callback(); } } },30); } </script> </body> </html>

頁面效果:

javascript實現勻速動畫效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。