1. 程式人生 > >第59天:緩動動畫封裝函數

第59天:緩動動畫封裝函數

scrip box body opacity offset anim width 四舍五入 結果

一、三個取整函數

這三個函數都是 數學函數

Math

Math.ceil() 向上取整 天花板

比如說 console.log(Math.ceil(1.01)) 結果 是 2

console.log(Math.ceil(1.9)) 結果 2

console.log(Math.ceil(-1.3)) 結果 是 -1

Math.floor() 向下取整 地板

比如說 console.log(Math.floor(1.01)) 結果 是

1

console.log(Math.floor(1.9)) 結果 1

console.log(Math.floor(-1.3)) 結果 是 -2

Math.round() 四舍五入函數

console.log(Math.round(1.01)) 結果 是 1

console.log(Math.round(1.9)) 結果 是 2

二、緩動動畫原理

勻速動畫的原理: 盒子本身的位置 + 步長

緩動動畫的原理: 盒子本身的位置

+ 步長 (不斷變化的)

三、緩動動畫封裝函數如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         div {
 8             width: 100px;
 9             height: 100px;
10             background-color: pink;
11
position: absolute; 12 left: 0; 13 opacity: 0.3; 14 } 15 </style> 16 </head> 17 <body> 18 <button id="btn200">200</button> 19 <button id="btn400">400</button> 20 <div id="box"></div> 21 </body> 22 </html> 23 <script> 24 var btn200 = document.getElementById("btn200"); 25 var btn400 = document.getElementById("btn400"); 26 var box = document.getElementById("box"); 27 btn200.onclick = function() { 28 animate(box,200); 29 } 30 btn400.onclick = function() { 31 animate(box,400); 32 } 33 34 function animate(obj,target){ // 第一個參數 動誰 第二個參數 動多少 35 clearInterval(obj.timer); 36 obj.timer = setInterval(function() { 37 // 計算步長 動畫的原理 盒子本身的位置 + 步長 38 var step = (target - obj.offsetLeft) / 10; // 步長 39 step = step > 0 ? Math.ceil(step) : Math.floor(step); // 取整步長 40 // obj.style.left = 盒子本身的位置 + 步長 41 obj.style.left = obj.offsetLeft + step + "px"; 42 if(obj.offsetLeft == target){ 43 clearInterval(obj.timer); 44 } 45 },30) 46 } 47 </script>

第59天:緩動動畫封裝函數