缓动

  1 <!DOCTYPE html>
  2 <html>
  3 
  4     <head>
  5         <meta charset="UTF-8">
  6         <title></title>
  7         <style type="text/css">
  8             div {
  9                 width: 100%;
 10                 height: 600px;
 11                 background: blue;
 12                 position: relative;
 13             }
 14             
 15             #box {
 16                 position: absolute;
 17                 left: 0px;
 18                 top: 800px;
 19             }
 20         </style>
 21         <script src="js/tool.js"></script>
 22     </head>
 23 
 24     <body>
 25 
 26         <div>
 27             <img id="box" src="img/f21.png" />
 28         </div>
 29 
 30         <script>
 31             //关于位置距离的缓动
 32             /*动画几个重要参数
 33              1、动画的起始值 start = -1000
 34              2、动画的结束值 target = 0
 35              3、动画的的节奏,步长。匀速运动,加速,减速,变速。
 36              4、元素当前值。 current = -300
 37              5、剩余值  rest =  target - current 
 38              6、步长 step = rest/10
 39                              81/10
 40                  0 - 100 米
 41                  10米。9米,8.1米
 42                  
 43               
 44              * 
 45              * */
 46             var box = document.getElementById("box");
 47             var start = box.offsetLeft;
 48             var target = 0;
 49 
 50             var m1 = new Move();
 51             //让谁动?
 52         /*    m1.ele = box;
 53             m1.start = box.offsetLeft;
 54             m1.target = -500;
 55             m1.direction = "left";
 56             m1.animation();*/
 57 
 58             var m2 = new Move();
 59             //让谁动?
 60             m2.ele = box;
 61             m2.start = box.offsetTop;
 62             m2.target = 0;
 63             m2.direction = "top";
 64             m2.animation(); 
 65         </script>
 66     </body>
 67 
 68 </html>
 69 /*
 70  var m = new Move();
 71 //让谁动?
 72 m.ele = box;
 73 m.start = XX; //开始位置
 74 m.target =XXX; 结束值
 75 m.direction = "top"; //左右动无需给参数,上下给top
 76 m.animation();  启动动画。
 77  * */
 78 function Move() {
 79     this.ele = null;
 80     this.start = 0;
 81     this.target = 100;
 82     this.speed = 10;
 83     this.direction = "left";
 84     this.offset = "offsetLeft";
 85     this.animation = function() {
 86         var o = this;
 87         if(o.direction == "top") {
 88             o.offset = "offsetTop"
 89         }
 90 
 91         var step,
 92             i = o.start,
 93             timer,
 94             current;
 95 
 96         function t() {
 97             current = o.ele[o.offset];
 98             step = (o.target - current) / o.speed
 99             step = Math.ceil(step);
100             i += step;
101             if(Math.abs(i - o.target) < 5) {
102                 i = o.target;
103                 clearInterval(timer)
104             }
105             o.ele.style[o.direction] = i + "px";
106         }
107         timer = setInterval(t, 20);
108     }
109 
110 }
原文地址:https://www.cnblogs.com/oklfx/p/7501669.html