这三个函数都是 数学函数
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>