這篇文章帶給大家的內容是關於javascript勻速運動實現側邊欄分享效果(程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
採用offsetLeft(物件距離左邊的距離)加上固定速度。
採用定時器setInterval和clearInterval
#根據目前位置到目標位置是正值還是負值決定運行的速度為正值還是負值。
<!DOCTYPE html> <html> <head> <title>用运动做一个侧边栏分享</title> <style> #div1{ width: 150px; height: 200px; background: #0f0; position: absolute; left: -150px; } #div1 span{ position: absolute; width: 20px; height: 60px; line-height: 20px; background: #00f; right: -20px; top: 70px; } </style> <script> window.onload=function(){ var oDiv=document.getElementById("div1"); oDiv.onmouseover=function(){ startMove(10,0); } oDiv.onmouseout=function(){ startMove(-10,-150); } } var timer=null; function startMove(speed,iTarget){ var oDiv=document.getElementById("div1"); clearInterval(timer); timer=setInterval(function(){ if(oDiv.offsetLeft==iTarget){ clearInterval(timer); }else{ oDiv.style.left=oDiv.offsetLeft+speed+"px"; } },30) } </script> </head> <body> <div id="div1"> <span>分享到</span> </div> </body> </html>
當我們寫好一段程式碼的時候,我們應該進行測試優化。測試無相容問題,封裝後的移動函數有兩個參數,這個時候,我們考慮參數是否可以簡化。
例如我們打計程車,我們可以告訴司機目的地,但是我們不必告訴司機以多少速度到達目的地,所以,我們可以簡化參數為一個參數。具體代碼如下。
<!DOCTYPE html> <html> <head> <title>用运动做一个侧边栏分享</title> <style> #div1{ width: 150px; height: 200px; background: #0f0; position: absolute; left: -150px; } #div1 span{ position: absolute; width: 20px; height: 60px; line-height: 20px; background: #00f; right: -20px; top: 70px; } </style> <script> window.onload=function(){ var oDiv=document.getElementById("div1"); oDiv.onmouseover=function(){ startMove(0); } oDiv.onmouseout=function(){ startMove(-150); } } var timer=null; function startMove(iTarget){ var oDiv=document.getElementById("div1"); clearInterval(timer); timer=setInterval(function(){ var speed=0; if(oDiv.offsetLeft>iTarget){ speed=-10; }else{ speed=10; } if(oDiv.offsetLeft==iTarget){ clearInterval(timer); }else{ oDiv.style.left=oDiv.offsetLeft+speed+"px"; } },30) } </script> </head> <body> <div id="div1"> <span>分享到</span> </div> </body> </html>
相關推薦:
原生javascript實現等速運動動畫效果_javascript技巧
以上是javascript勻速運動實現側邊欄分享效果(程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!