js 模拟css3 动画

<html>
<head>
<title> javaScript缓动入门 </title>
</head>
<body>
<style type=text/css>
 #taxiway {
    background: #e8e8ff;  800px; height: 100px
 }
 #move {
     background: #a9ea00; 100px; height:98px; border:1px solid red
 } 
</style>
<div id="taxiway">
 <div id="move" style="position: absolute; left: 0" onClick="start()"></div>
</div>
<p class=notice display="text-align:center">点击可移动绿色方块</p>
<p id="time0"></p>
<p id="time1"></p>
<p id="time2"></p>
</body>
<script>
var o_show_time0 = document.getElementById('time0');
var o_show_time1 = document.getElementById('time1');
var o_show_time2 = document.getElementById('time2');
//动画参数设置http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm
//这个动画距离没有误差,但是执行的时间有误差
var Tween = {
    Quad: {
    easeOut: function(t, b, c, d) {
           t/=d;  //   t=t/d   1/100 //这样就走了100份之一
                   //当t等于d的时候那么他们相除就等于1  刚刚好是初始值动画和结束值相加的值 
    return b+c*(t);
}
        
    }
}

//b:div之样式left初值,c:div要移动的距离,d:div在时间d内完成移动,t:时间 
//   d:div在时间d内完成移动 的时间是
var b=0,c=500,d=1000,t=0;

function start(){
     o_show_time0.innerHTML =  new Date();
 function Run(){
    var left =  Math.ceil(Tween.Quad.easeOut(t,b,c,d));
    move.style.left = left + "px";
    //console.log(left)
    if(t<d){
         t++;
         console.log('d='+d)
          console.log('t='+t)
          o_show_time1.innerHTML =  new Date();
           setTimeout(Run, 10);
           }
}
Run();
    
    }


</script>

</html>
原文地址:https://www.cnblogs.com/hao123456/p/5581155.html