Dieser Artikel stellt hauptsächlich die Methode zur Realisierung einer gleichmäßigen Beschleunigung und gleichmäßigen Verzögerung in JS vor und umfasst verwandte Implementierungstechniken von JavaScript, die Zeitfunktionen und mathematische Operationen kombinieren, um Seitenelementstile dynamisch zu betreiben
Das Beispiel in diesem Artikel beschreibt die Methode zur Realisierung einer gleichmäßigen Beschleunigung und gleichmäßigen Verzögerung in JS. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
/* * 动画帧函数 * * */ var requestFrame=function(){ var prefixList=['webkit','moz','ms']; var func; for(var i=0;i<prefixList.length;i++){ func=window[prefixList[i]+"RequestAnimationFrame"]; if(func){ return function(callback){ func(callback); } } } return function(callback){ setTimeout(callback,67); } }(); /* * 匀加速运动 * * */ function animate_easeIn(element,from,to,duration,callback){ var time=+new Date; var distance=to-from; var a=2*distance/(duration*duration); //加速度a=2x/t^2(包含方向) var func=function(){ var time2,offsetDis,durTime; time2=+new Date; durTime=time2-time; //运动的时间间隔 offsetDis=Math.ceil(a*durTime*durTime/2);//X=a*t^2/2 if(duration<durTime){ element.css('left',to+'px'); callback(); }else{ element.css('left',from+offsetDis+'px'); requestFrame(func); } } func(); } /* * 匀减速运动 * * */ function animate_easeOut(element,from,to,duration,callback){ var time=+new Date; var distance=Math.abs(to-from); var a=2*distance/(duration*duration); //x=a*t^2/2 求出加速度 var v0=Math.sqrt(distance*2*a); // 根据公式:2as=v^2求出初速度 var func=function(){ var time2,offsetDis,durTime,pos; time2=+new Date; durTime=time2-time; offsetDis=Math.ceil(v0*durTime-a*durTime*durTime/2); //根据s=v0*t+1/2*a*t^2求出位移x if(duration<durTime){ element.css('left',to+'px'); callback(); }else{ pos=from>to? from-offsetDis : from+offsetDis; element.css('left',pos+'px'); requestFrame(func); } } func(); }
Das obige ist der detaillierte Inhalt vonCode-Sharing zur Realisierung einer gleichmäßigen Beschleunigung und gleichmäßigen Verzögerungsbewegung mithilfe von JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!