JavaScript探測(cè)CSS動(dòng)畫是否已經(jīng)完成的方法
更新時(shí)間:2016年08月30日 09:08:16 作者:愚人的一天
這篇文章主要為大家詳細(xì)介紹了JavaScript探測(cè)CSS動(dòng)畫是否已經(jīng)完成的方法,感興趣的小伙伴們可以參考一下
不啰嗦上代碼:
WN:(function(){ var el = $('<fakeelement>'), transition="transition", transitionEnd, animEvent={'start':null,'iteration':null,'end':null}, vendorPrefix; transition = transition.charAt(0).toUpperCase() + transition.substr(1); vendorPrefix=(function(){//現(xiàn)在的opera也是webkit var i=0, vendor=["Moz", "Webkit", "Khtml", "O", "ms"]; while (i < vendor.length) { if (typeof el.css(vendor[i] + transition) === "string"){ return vendor[i]; } i++; } return false; })(); transitionEnd=(function(){ var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for(var name in transEndEventNames){ if(typeof el.css(name) === "string"){ return transEndEventNames[name]; } } })(); animEvent.end=(function(){ var animEndEventNames = { WebkitAnimation : 'webkitAnimationEnd', animation : 'animationend' } for(var name in animEndEventNames){ if(typeof el.css(name) === "string"){ return animEndEventNames[name]; } } })(); animEvent.iteration=(function(){ var animIterationEventNames = { WebkitAnimation : 'webkitAnimationIteration', animation : 'animationiteration' } for(var name in animIterationEventNames){ if(typeof el.css(name) === "string"){ return animIterationEventNames[name]; } } })(); animEvent.start=(function(){ var animStartEventNames = { WebkitAnimation : 'webkitAnimationStart', animation : 'animationstart' } for(var name in animStartEventNames){ if(typeof el.css(name) === "string"){ return animStartEventNames[name]; } } })(); return { called:false, addTranEvent:function(elem,fn,duration){ var self = this; var fncallback = function(){ if(!self.called){ fn(); self.called = true; } }; function hand(){ elem.on(transitionEnd,function(){ //elem.unbind(transitionEnd,arguments.callee); fncallback(); }); } setTimeout(hand,duration); }, addAnimEvent:function(elem,name,fn){ elem.on(animEvent[name],fn); }, removeAnimEvent:function(elem,name,fn){ elem.unbind(animEvent[name],fn); }, setStyleAttribute:function(elem,val){ if(Object.prototype.toString.call(val) === "[object Object]"){ for(var name in val){ if(/^transition|animation|transform/.test(name)){ var styleName=name.charAt(0).toUpperCase() + name.substr(1); elem.css(vendorPrefix+styleName,val[name]); }else{ elem.css(name,val[name]); } } } } }; })(),
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- javascript字典探測(cè)用戶名工具
- 用javascript實(shí)現(xiàn)給圖片加鏈接
- js實(shí)現(xiàn)點(diǎn)擊鏈接后延遲3秒再跳轉(zhuǎn)的方法
- JS實(shí)現(xiàn)點(diǎn)擊鏈接取消跳轉(zhuǎn)效果的方法
- JS獲得URL超鏈接的參數(shù)值實(shí)例代碼
- JS對(duì)img標(biāo)簽進(jìn)行優(yōu)化使用onerror顯示默認(rèn)圖像
- js注意img圖片的onerror事件的分析
- JS使用onerror捕獲異常示例
- JavaScript通過使用onerror設(shè)置默認(rèn)圖像顯示代替alt
- 用window.onerror捕獲并上報(bào)Js錯(cuò)誤的方法
- JavaScript中的onerror事件概述及使用
- javascript window.onerror事件學(xué)習(xí)新收獲
- JS實(shí)現(xiàn)探測(cè)網(wǎng)站鏈接的方法【測(cè)試可用】
相關(guān)文章
webpack打包時(shí)如何修改文件名的實(shí)現(xiàn)示例
本文主要介紹了webpack打包時(shí)如何修改文件名的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06JS實(shí)現(xiàn)點(diǎn)擊下拉菜單把選擇的內(nèi)容同步到input輸入框內(nèi)的實(shí)例
下面小編就為大家分享一篇JS實(shí)現(xiàn)點(diǎn)擊下拉菜單把選擇的內(nèi)容同步到input輸入框內(nèi)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-018個(gè)開發(fā)者必須知道的JavaScript深層概念(推薦)
JavaScript有一個(gè)名為“調(diào)用堆?!保–all Stack)的簡(jiǎn)單列表,它逐一管理任務(wù)(堆棧算法),但是當(dāng)異步任務(wù)被傳遞時(shí),JavaScript會(huì)把它彈出到web API,瀏覽器就會(huì)處理它,這篇文章主要介紹了8個(gè)開發(fā)者必須知道的JavaScript深層概念,需要的朋友可以參考下2022-10-10js實(shí)現(xiàn)轉(zhuǎn)盤抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)轉(zhuǎn)盤抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Bootstrap彈出帶合法性檢查的登錄框?qū)嵗a【推薦】
這篇文章主要介紹了Bootstrap彈出帶合法性檢查的登錄框?qū)嵗a【推薦】的相關(guān)資料,需要的朋友可以參考下2016-06-06