1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      web開發(fā)中基于勻速運動的示例分析

      這篇文章主要介紹web開發(fā)中基于勻速運動的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

      成都創(chuàng)新互聯(lián)是一家專業(yè)提供蘭陵企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為蘭陵眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。

      javascript中,如何讓一個元素(比如div)運動起來呢?

      設(shè)置基本的樣式,一定要讓div有定位( 當然用margin的變化也可以讓元素產(chǎn)生運動效果 );

      基本的結(jié)構(gòu):

         
         

      當我們點擊,這個按鈕的時候,要讓div運動起來,其實就是讓div的left值持續(xù)變化,那么div就會產(chǎn)生運動效果,我們先讓left改變,再讓他持續(xù)改變

      window.onload = function(){
          var oBtn = document.querySelector( "input" ),
            oBox = document.querySelector( '#box' );
          oBtn.onclick = function(){
            oBox.style.left = oBox.offsetLeft + 10 + 'px';
          }
        }

      那么每當我點擊按鈕的時候,div的left值就會在原來的基礎(chǔ)上加上10px。這里也可以用獲取非行間樣式的方法獲取left的值再加上10px,也可以達到效果

      function css(obj, attr) {
        if (obj.currentStyle) {
          return obj.currentStyle[attr];
        } else {
          return getComputedStyle(obj, false)[attr];
        }
      }
      window.onload = function () {
        var oBtn = document.querySelector("input"),
          oBox = document.querySelector('#box');
        oBtn.onclick = function () {
          oBox.style.left = parseInt( css( oBox, 'left' ) ) + 10 + 'px';
        }
      }

      offsetLeft與獲取非行間樣式left的值 有什么區(qū)別呢?

      offsetLeft沒有px單位,而left是有px單位的

      oBtn.onclick = function () {
          // alert( css( oBox, 'left' ) ); //0px
          alert( oBox.offsetLeft ); //0
        }

      現(xiàn)在div是點擊一下動一下,我們讓他持續(xù)動起來,怎么做? 加上定時器

        oBtn.onclick = function () {
          setInterval( function(){
            oBox.style.left = oBox.offsetLeft + 10 + 'px';
          }, 1000 / 16 );
        }

      當我們點擊按鈕時候,div就會不停的向左運動,怎么讓他停下來呢?停下來,肯定是需要條件的,比如,我們讓他跑到500px的時候停下來

      var timer = null;
        oBtn.onclick = function () {
          timer = setInterval( function(){
            if ( oBox.offsetLeft == 500 ) {
              clearInterval( timer );
            }else {
              oBox.style.left = oBox.offsetLeft + 10 + 'px';
            }
          }, 1000 / 16 );
        }

      這樣,我們就可以讓div停在500px的位置,這里如果我們把步長10 改成 7或者8,你會發(fā)現(xiàn)停不下來了,為什么呢?因為會跳過500px這個判斷條件

      0, 7, 14, 21 .... 280, 287, 294, 301, ... 490, 497, 504. 從497變成504跳過了500px,所以div停不下來,那怎么辦呢?修改下判斷條件就可以了.

      oBtn.onclick = function () {
        timer = setInterval( function(){
          if ( oBox.offsetLeft >= 500 ) {
            oBox.style.left = 500 + 'px';
            clearInterval( timer );
          }else {
            oBox.style.left = oBox.offsetLeft + 7 + 'px';
          }
        }, 1000 / 16 );
      }

      把條件變成>=500 清除定時器, 同時還要加上這句代碼oBox.style.left = 500 + 'px',讓他強制被停在500px, 否則div就不會停在500px, 而是504px了,還有一個問題,如果在div運動的過程中,你不停的點擊按鈕,會發(fā)現(xiàn), div開始加速運動了,而不是每次加10px了,這又是為什么呢?這是因為,每次點擊一下按鈕,就開了一個定時器,每次點擊一個按鈕就開了一個定時器,這樣就會有多個定時器疊加,那么速度也會產(chǎn)生疊加,所以div開始加速了,那么我們要讓他保持10px的速度,意思就是不要讓定時器疊加,更通俗點說就是確保一個定時器在開著。應(yīng)該怎么做呢?

      oBtn.onclick = function () {
        clearInterval( timer );
        timer = setInterval( function(){
          if ( oBox.offsetLeft >= 500 ) {
            oBox.style.left = 500 + 'px';
            clearInterval( timer );
          }else {
            oBox.style.left = oBox.offsetLeft + 7 + 'px';
          }
        }, 1000 / 16 );
      }

      只需要在每次點擊按鈕的時候,清除之前的定時器就可以了,這樣就能確保始終一個定時器開著,至此,一個最基本的勻速運動結(jié)構(gòu)就完成了,那么我們可以把他封裝成函數(shù)

      function animate(obj, target, speed) {
              clearInterval(timer);
              timer = setInterval(function () {
                if (obj.offsetLeft == target) {
                  clearInterval(timer);
                } else {
                  obj.style.left = obj.offsetLeft + speed + 'px';
                }
              }, 30);
            }

      有了這個函數(shù)之后,我們來小小的應(yīng)用一下。

      http://www.jiathis.com/getcode

      打開這個網(wǎng)站,你注意看他右邊有個側(cè)欄式效果(分享到),這種特效在網(wǎng)站上很普遍

      web開發(fā)中基于勻速運動的示例分析

      
      
      
        
        側(cè)邊欄 - by ghostwu
        
        
      
      
      
        
      分享到

      再來一個淡入淡出的效果:

      web開發(fā)中基于勻速運動的示例分析

      當鼠標移上去之后,透明度變成1

      web開發(fā)中基于勻速運動的示例分析

      
      
      
        
        淡入淡出 - by ghostwu
        
        
      
      
      
      
      

      以上是“web開發(fā)中基于勻速運動的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      新聞名稱:web開發(fā)中基于勻速運動的示例分析
      文章位置:http://www.ef60e0e.cn/article/pdegso.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        灌阳县| 阜平县| 磐安县| 连南| 阿城市| 江油市| 惠安县| 丰顺县| 乾安县| 九江市| 重庆市| 崇阳县| 苏州市| 建平县| 吉林市| 孟津县| 大关县| 化德县| 九江县| 洮南市| 光山县| 娄底市| 平泉县| 汕尾市| 淳化县| 龙里县| 通辽市| 泾阳县| 泽州县| 改则县| 喀喇沁旗| 珲春市| 三河市| 龙岩市| 昆山市| 田东县| 原平市| 东阿县| 南华县| 涿鹿县| 洛川县|