js實現的元素抖動效果程式碼例項
抖動效果在很多功能中都有應用,比如表單登入密碼不正確的話,點選登入按鈕就會以抖動的形式進行提示。
下面就通過程式碼例項介紹一下如何實現此效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #body{ text-align:center; } #antzone{ width:200px; position:absolute; margin:10px auto; height:100px; border:2px dotted red; text-align:center } </style> <script type="text/javascript"> function SKclass (obj,Rate,speed) { var oL=obj.offsetLeft; var oT=obj.offsetTop; this.stop=null; this.oTime=null; var om=this; this.start=function(){ if(parseInt(obj.style.left)==oL-2){ obj.style.top=oT+2+"px"; setTimeout(function(){obj.style.left=oL+2+"px"},Rate) } else{ obj.style.top=oT-2+"px"; setTimeout(function(){obj.style.left=oL-2+"px"},Rate) } this.oTime=setTimeout(function(){om.start()},speed); } this.stop=function(){ clearTimeout(this.oTime); } } window.onload=function(){ var m=document.getElementById("antzone"); var nn=new SKclass(m,20,70); var shakeBt=document.getElementById("shake"); var stBt=document.getElementById("st"); shakeBt.onclick=function(){nn.start()} stBt.onclick=function(){nn.stop()} } </script> </head> <body> <div style="margin:10px 200px"> <div><input type="button" id="shake" value="點選抖動"/></div> <div><input type="button" id="st" value="逐漸停止抖動"/></div> <div id="antzone"></div> </div> </body> </html>
上面的程式碼實現了我們的要求,下面就介紹一下它的實現過程。
一.程式碼註釋:
(1).function SKclass (obj,Rate,speed) {},這是建立一個建構函式,第一個引數是要抖動的元素,第二個和第三個引數都是規定定時器函式延遲多長時間再去執行。
(2).var oL=obj.offsetLeft,在當前程式碼中是獲取元素距離body左側的距離。
(3).var oT=obj.offsetTop,在當前程式碼中是獲取元素距離body頂部的距離。
(4).this.stop=null,建立一個屬性,並賦值為null。
(5).this.oTime=null,這個屬性是用作定時器函式的標識。
(6).var om=this,將this值賦值給變數om。
(7).this.start=function(){
if(parseInt(obj.style.left)==oL-2){
obj.style.top=oT+2+"px";
setTimeout(function(){obj.style.left=oL+2+"px"},Rate)
}
else{
obj.style.top=oT-2+"px";
setTimeout(function(){obj.style.left=oL-2+"px"},Rate)
}
this.oTime=setTimeout(function(){om.start()},speed);
},這段程式碼的功能就是讓元素向左和向上2px範圍內抖動。
最後一局是採用遞迴的方式呼叫this.start()方法,這樣就實現了持續抖動。
(8).this.stop=function(){
clearTimeout(this.oTime);
},停止定時器函式的執行。
二.相關閱讀:
(1).建構函式可以參閱javascript建構函式簡單介紹一章節。
(2).offsetLeft可以參閱js offsetLeft一章節。
(3).parseInt()方法可以參閱javascript parseInt()一章節。
(4).setTimeout()方法可以參閱setTimeout()一章節。
(5).new運算子的作用可以參閱js new運算子一章節。
相關文章
- html實現簡單ListViews效果的例項程式碼HTMLView
- 美化滾動條效果程式碼例項
- JavaScript元素抖動效果JavaScript
- css3晃動效果程式碼例項CSSS3
- js 實現程式碼雨效果JS
- CSS3星系運動效果程式碼例項CSSS3
- jQuery tab選項卡效果程式碼例項jQuery
- canvas載入效果程式碼例項Canvas
- CSS橢圓效果程式碼例項CSS
- jQuery利用name匹配元素程式碼例項jQuery
- canvas原型鐘錶效果程式碼例項Canvas原型
- css3水滴效果程式碼例項CSSS3
- css背景虛化效果程式碼例項CSS
- canvas氣泡上浮效果程式碼例項Canvas
- react專案中實現元素的拖動和縮放例項React
- JavaScript刪除元素節點程式碼例項JavaScript
- jQuery點選滑出層效果程式碼例項jQuery
- CSS3心形效果程式碼例項CSSS3
- div前後翻轉效果程式碼例項
- 當前文字框高亮效果程式碼例項
- CSS3旋轉效果程式碼例項CSSS3
- 淡入淡出效果簡單程式碼例項
- canvas繪製箭頭效果程式碼例項Canvas
- jQuery遍歷array陣列元素程式碼例項jQuery陣列
- jQuery實現的表格展開伸縮效果例項jQuery
- JS 預編譯程式碼例項分析JS編譯
- CSS3滑過光束效果程式碼例項CSSS3
- CSS3小黃人效果程式碼例項CSSS3
- css3折角效果程式碼例項CSSS3
- CSS3梯形效果程式碼例項CSSS3
- CSS3背景漸變效果程式碼例項CSSS3
- vuejs實現新增tag標籤程式碼例項VueJS
- 例項程式碼分享Python實現Linux監控PythonLinux
- 實現抖音 “影片無限滑動“效果
- jquery.idTabs.min.js選項卡程式碼例項jQueryJS
- 小例項: 用vue實現手風琴效果Vue
- 獲取倒數第幾個元素程式碼例項
- CSS匹配第一個li元素程式碼例項CSS
- 使用原生js實現選項卡功能例項教程JS