首頁 >web前端 >js教程 >javascript勻速運動實現側邊欄分享效果(程式碼)

javascript勻速運動實現側邊欄分享效果(程式碼)

不言
不言原創
2018-08-31 09:55:311473瀏覽

這篇文章帶給大家的內容是關於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技巧

以上是javascript勻速運動實現側邊欄分享效果(程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn