9
A
回答
14
element.addEventListener('transitionend', function(event) {
alert("CSS Property completed: " + event.propertyName);
}, false);
現在,確切的事件名稱尚未標準化。以下是來自MDN的報價:
轉換完成時會觸發單個事件。
在所有符合標準的瀏覽器中,事件是transitionend
,
in WebKit它是webkitTransitionEnd
。
這裏的搗鼓的Webkit:http://jsfiddle.net/bNgWY/
3
至於目前,我正在做我將分享從Marakana教程有用的,跨瀏覽器實現同樣的事情。
// First, we store the names of the event according to the browsers
var navigatorsProperties=['transitionend','OTransitionEnd','webkitTransitionEnd'];
//For each of them...
for(var i in navigatorsProperties)
{
//We attach it to our overlay div
el.addEventListener(navigatorsProperties[i],function()
{
// Here's the code we want to fire at transition End
console.log('transition end');
},false);
}
這是要注意的是IE10支持與transitionend
轉變(見MSDN)。
IE9及以下做不支持轉變(見caniuse.com),所以你不能附加任何事件監聽到轉變結束(所以不要嘗試msTransitionend
或任何這些瀏覽器)。
編輯:在閱讀Github上的Modernizr文檔時,我偶然發現了他們的跨瀏覽器polyfills頁面。在其他許多有用的鏈接中,我發現這個小巧但非常好的transitionend script。
記住,在Github上README.md的例子使用jQuery但庫確實需要沒有圖書館和沒有依賴性,因爲它是寫在香草的JavaScript。
0
我無法找到符合我要求的合適'transitionend'填充物。所以,如果你想要一些鉤住過渡結束一次,使用此:
(function() {
var i,
el = document.createElement('div'),
transitions = {
'transition':'transitionend',
'OTransition':'otransitionend', // oTransitionEnd in very old Opera
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
};
var transitionEnd = '';
for (i in transitions) {
if (transitions.hasOwnProperty(i) && el.style[i] !== undefined) {
transitionEnd = transitions[i];
break;
}
}
Object.prototype.onTransitionEndOnce = function(callback) {
if (transitionEnd === '') {
callback();
return this;
}
var transitionEndWrap = function(e) {
callback();
e.target.removeEventListener(e.type, transitionEndWrap);
};
this.addEventListener(transitionEnd, transitionEndWrap);
return this;
};
}());
相關問題
- 1. 如何在沒有約束檢查的情況下刪除表
- 2. 在沒有JavaScript的情況下在PHP中檢測框架?
- 3. 在沒有代碼庫的情況下測試JavaScript
- 4. 如何在沒有GPS或WiFi的情況下檢測位置?
- 5. activateJavaScript.org如何在沒有JavaScript的情況下檢測您的瀏覽器
- 6. 如何在沒有microsoft.office.interop的情況下將PDF轉換爲doc?
- 7. 如何在沒有FileReader的情況下在Javascript中將文件轉換爲Blob?
- 8. 在沒有轉換的情況下Java將int []轉換爲byte []
- 9. PHP腳本在沒有錯誤的情況下超時結束
- 10. VBscript在沒有用戶輸入的情況下結束
- 11. 開關的情況下沒有在JavaScript
- 12. 如何在沒有webkit上下文的情況下檢測CSS translate3d?
- 13. 如何在沒有給出條目的情況下結束vbs文件
- 14. 在沒有塊的情況下檢測滾動視圖動畫的結尾
- 15. 在沒有編譯的情況下測試我的android庫
- 16. 在沒有拆分的情況下在JavaScript中進行交換
- 17. 如何在不結束腳本的情況下在python中結束進程?
- 18. 如何在沒有包的情況下測量tcl中的cputime?
- 19. 在沒有轉換的情況下在數據庫中顯示日期時間
- 20. 如何在沒有ACTION_DOWN和ACTION_UP的情況下檢測類似Draglike的行爲
- 21. 如何在沒有MouseEvent的情況下檢測Qt中的鼠標狀態
- 22. 如何在不結束註釋的情況下寫入* /在javadoc
- 23. 在沒有ImageMagick的情況下將PDF轉換爲PHP圖像
- 24. 在Java中沒有轉換的情況下雙倍長久
- 25. 在沒有ctype.h的情況下轉換大小寫字母
- 26. bytearray.fromhex不會在沒有字母編號的情況下轉換
- 27. 在沒有shell的情況下將HTML轉換爲圖像
- 28. 在沒有ANT或Maven的情況下將CSV轉換爲JSON
- 29. 如何在沒有測試的情況下使用水豚
- 30. 如何在沒有Scala的情況下測試Spark SQL查詢
如何將此分配給特定的過渡,如不透明? – 2012-01-11 05:41:16
@Wraith - 你不能將它分配給特定的轉換。相反,你會聽到對元素進行觸發的事件。然後,您可以從事件對象中獲取您正在查找的信息。查看我的更新。 – 2012-01-11 05:47:16
@Wraith:在Joseph鏈接到的頁面上查找「檢測到轉換完成」。 'propertyName':一個字符串,表示已完成轉換的CSS屬性的名稱。 'elapsedTime':一個浮點,指示事件觸發時轉換已經運行的秒數。該值不受轉換延遲的影響。 – 2012-01-11 05:47:18