js檢測css3動畫是否執行完畢程式碼例項
由於硬體的進步,現在css3雖然說不上已經達到普及的程度,起碼也可以說應用已經非常廣泛。
css3能夠實現流暢的動畫效果,在實際應用中可能需要有這樣的效果,那就是能夠檢測動畫執行完畢進而執行相應的程式碼。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .sample{ width:200px; height:200px; border:1px solid green; background:lightgreen; opacity:1; margin-bottom:20px; transition-property:opacity; transition-duration:3s; } .sample.hide{ opacity:0; } </style> <script> window.onload=function(){ var obt=document.getElementById("bt"); (function() { var e=document.getElementsByClassName('sample')[0]; function whichTransitionEvent(){ var t; var el=document.createElement('antzone'); var transitions = { 'transition':'transitionend', 'OTransition':'oTransitionEnd', 'MozTransition':'transitionend', 'WebkitTransition':'webkitTransitionEnd' } for(t in transitions){ if( el.style[t] !== undefined ){ return transitions[t]; } } } var transitionEvent = whichTransitionEvent(); transitionEvent && e.addEventListener(transitionEvent, function() { alert('css3動畫結束'); }); startFade = function() { e.className+= ' hide'; } })(); obt.onclick=function(){ this.style.display='none'; startFade(); } } </script> </head> <body> <div class="sample"></div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下他的實現過程。
一.程式碼註釋:
(1).window.onload=function(){},當文件內容完全載入完畢再去執行函式中的程式碼。(2).var obt=document.getElementById("bt"),獲取id屬性值為bt的元素物件,這裡就是按鈕。
(3).(function() {})()一個匿名自執行函式。
(4).var e=document.getElementsByClassName('sample')[0],獲取class屬性值為sample集合中的第一個元素。
(5).function whichTransitionEvent(){},此函式實現f返回物件的事件名稱。
(6).var t,宣告一個變數,會在後來的for迴圈中使用。
(7) .var el=document.createElement('antzone'),建立一個元素物件。
(8).var transitions = {
'transition':'transitionend',
'OTransition':'oTransitionEnd',
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
},此物件直接量中儲存的是對應的事件名稱,大家可能都知道由於瀏覽器的相容問題css3的屬性可能需要在屬性前面加上瀏覽器的標誌,比如-webkit-transform-style或者-moz-transform-style等,這裡的動畫事件transitionend也是如此。
(9).for(t in transitions){
if( el.style[t] !== undefined ){
return transitions[t];
}
},前面建立的el元素其實就是用來檢測支援何種形式的transitionend事件,找出對應的然後返回。
(10).var transitionEvent = whichTransitionEvent(),返回事件名稱。
(11).transitionEvent && e.addEventListener(transitionEvent, function() {
alert('css3動畫結束');
}),註冊事件處理函式。
(12).startFade = function() {
e.className+= ' hide';
},此函式可以為元素再新增一個class樣式類,新新增的樣式類可以設定元素透明度為0。
二.相關閱讀:
(1).getElementsByClassName()方法可以參閱getElementsByClassName()一章節。
(2).document.createElement()方法可以參閱document.createElement()一章節。
(3).addEventListener()方法可以參閱addEventListener()一章節。
(4).className可以參閱js className一章節。
(5).transitionend事件可以參閱javascript transitionend事件一章節。
相關文章
- js檢測文字框是否為空程式碼例項JS
- css3 animation動畫程式碼例項CSSS3動畫
- JavaScript判斷animation動畫執行完畢JavaScript動畫
- JavaScript 判斷transition動畫執行完畢JavaScript動畫
- javascript檢測iframe是否已經載入完畢JavaScript
- javascript判斷flash檔案載入完畢程式碼例項JavaScript
- js呼叫執行exe應用程式程式碼例項JS
- js檢測蘋果終端裝置程式碼例項JS蘋果
- js檢測漢字的長度程式碼例項JS
- ajax請求完畢之前顯示正在載入程式碼例項
- 文字框內容輸入完畢觸發事件程式碼例項事件
- 旋轉等待內容載入完畢實現程式碼例項
- javascript測試程式碼的執行時間程式碼例項JavaScript
- js檢測上傳檔案型別程式碼例項JS型別
- jQuery ajax載入完畢再去執行後面的程式碼jQuery
- requestAnimationFrame()動畫例項程式碼requestAnimationFrame動畫
- js驗證表單項是否為空例項程式碼JS
- js動畫方式改變div尺寸程式碼例項JS動畫
- js判斷元素是否為空程式碼例項JS
- 檢測checkbox核取方塊是否被選中的例項程式碼
- jQuery 動畫效果程式碼例項jQuery動畫
- js判斷文字框是否為空程式碼例項JS
- js驗證是否是正整數程式碼例項JS
- js判斷螢幕是否旋轉程式碼例項JS
- CSS3雪人程式碼例項CSSS3
- js檢測瀏覽器內容縮放效果程式碼例項JS瀏覽器
- js檢測上傳檔案大小和型別例項程式碼JS型別
- js檢測當前瀏覽器Flash player版本程式碼例項JS瀏覽器
- 頁面載入完畢之後自動執行指定程式碼
- 如何判斷js檔案是否載入完畢JS
- js判斷引入的js檔案是否載入完畢JS
- css3實現的loadding載入動畫程式碼例項CSSS3動畫
- css Sprite 動畫效果程式碼例項CSS動畫
- css3和js模擬翻頁效果程式碼例項CSSS3JS
- 檢測360瀏覽器javascript程式碼例項瀏覽器JavaScript
- CSS3卡通形象程式碼例項CSSS3
- css3星空效果程式碼例項CSSS3
- css3水滴效果程式碼例項CSSS3