小米網登入視窗抖動函數實現

來源:互聯網
上載者:User

標籤:

      之前經常在小米網上買東西,發現小米網站的登入驗證做得挺有特色的。當使用者名稱或密碼輸入錯誤的時候會像“搖頭”似得抖一抖,略微想了一下,發現實現的方式挺簡單的,所以今天下午花了一點時間想了一下,以下是我的思路和代碼。

       要實現抖動,需要實現一下幾步:

1,擷取當前元素的位置作為初始位置。2,設定定時器迴圈改變元素的位置,每次左右移動一次比上一次移動少一點點距離,直到停止到初始位置。3,觸發調用

 小米網使用一個 div 元素放置表單元素, div 元素水平置中,並設定定位方式為 relative ,以便文字框能夠依據父元素 div 作參照左右移動。這裡我使用一張圖片來代替文字框,HTML代碼如下:

<div class="main">    <img src="cai.jpg" id="cai" /></div>

CSS代碼如下:

.main{width:300px; margin:20px auto; position:relative;}#cai{width:300px; position:absolute; top:0; left:0; cursor:pointer;}

 JavaScript代碼如下:

 1 window.onload = function(){ 2         var cai = document.getElementById("cai"); 3          4         function shake(obj,attr){ 5             var _this = obj; 6             shake.pos = shake.pos ? shake.pos : parseInt(getStyle(_this,attr)); 7             var arr = []; 8             for(var i=20;i>0;i-=2){ 9                 arr.push(i,-i);10             }11             arr.push(0);12             shake.timer = null;13             clearInterval(shake.timer);14             shake.num = 0;15             shake.timer = setInterval(function(){16                 _this.style[attr] = shake.pos + arr[num] + "px";17                 shake.num++;18                 if(shake.num>arr.length) clearInterval(shake.timer);19             },20);20         }21 22         function getStyle(obj,attr){23             return getComputedStyle(obj,null)[attr] ? getComputedStyle(obj,null)[attr] : obj.currentStyle[attr];24         }25         26         cai.onclick = function(){27             shake(this,"left");28         };29     }

        有幾個需要注意的地方,首先是為了相容IE瀏覽器,我們需要在取元素初始位置的時候進行相容性處理。我們知道W3C的方法是 window.getComputedStyle(obj,null)[attr] ,而IE專屬的方法是 obj.currentStyle[attr] 。

       為了保證在連續點擊的時候初始位置的擷取不出錯,只需要在第一次點擊的時候將初始位置儲存下來即可,之後便可直接使用該屬性值,我們需要判斷是不是第一次點擊: shake.pos = shake.pos ? shake.pos : parseInt(getStyle(_this,attr)); 

       為了能實現我們最開始說的第二點,我們可以迴圈產生一個包含移動位置的數組。列印出來我們產生的數組如下所示:

最後就是調用了,在小米網中使用者名稱或密碼輸入錯誤之後實際上是執行了一次ajax通訊過程,所以會有回呼函數。我們可以將回呼函數作為參數傳進去,在抖動結束之後執行。

除了可以左右抖動之外,我們可以試著把參數 left 改成 top 傳進去,這樣就能實現上下抖動了。

       

小米網登入視窗抖動函數實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.