क्या सीएसएस संक्रमण पूरा होने पर अधिसूचना (कॉलबैक की तरह) प्राप्त करना संभव है?सीएसएस संक्रमण पर कॉलबैक
उत्तर
मुझे पता है कि सफारी webkitTransitionEnd कॉलबैक लागू करता है जिसे आप सीधे संक्रमण के साथ तत्व से जोड़ सकते हैं।
उनके उदाहरण (कई पंक्तियों में रीफोर्मेट):
box.addEventListener(
'webkitTransitionEnd',
function(event) {
alert("Finished transition!");
}, false);
हाँ, अगर ऐसी बातें ब्राउज़र द्वारा समर्थित हैं, तो एक घटना है जब संक्रमण पूर्ण शुरू हो रहा है। वास्तविक घटना तथापि, ब्राउज़रों के बीच अंतर होता है:
- वेबकिट ब्राउज़रों (क्रोम, सफारी)
webkitTransitionEnd
- फ़ायरफ़ॉक्स का उपयोग करता
transitionend
- IE9 + का उपयोग करता
msTransitionEnd
- ओपेरा
oTransitionEnd
लेकिन अगर आप का उपयोग करता है का उपयोग करें पता होना चाहिए कि webkitTransitionEnd
हमेशा आग नहीं होता है! इसने मुझे कई बार पकड़ा है, और ऐसा लगता है कि अगर एनीमेशन तत्व पर कोई प्रभाव नहीं पड़ेगा। इस के आसपास पहुंचने के लिए, इस मामले में इवेंट हैंडलर को आग लगाने के लिए टाइमआउट का उपयोग करना समझ में आता है कि यह अपेक्षित रूप से ट्रिगर नहीं किया गया है। इस समस्या के बारे में एक ब्लॉग पोस्ट यहाँ उपलब्ध है: -:
, मैं कोड का एक हिस्सा में इस घटना है कि इस तरह एक सा लग रहा है का उपयोग करते हैं
var transitionEndEventName = "XXX"; //figure out, e.g. "webkitTransitionEnd"..
var elemToAnimate = ... //the thing you want to animate..
var done = false;
var transitionEnded = function(){
done = true;
//do your transition finished stuff..
elemToAnimate.removeEventListener(transitionEndEventName,
transitionEnded, false);
};
elemToAnimate.addEventListener(transitionEndEventName,
transitionEnded, false);
//animation triggering code here..
//ensure tidy up if event doesn't fire..
setTimeout(function(){
if(!done){
console.log("timeout needed to call transition ended..");
transitionEnded();
}
}, XXX); //note: XXX should be the time required for the
//animation to complete plus a grace period (e.g. 10ms)
नोट: संक्रमण घटना अंत नाम प्राप्त करने के लिए आप उत्तर के रूप में पोस्ट की गई विधि का उपयोग कर सकते हैं: How do I normalize CSS3 Transition functions across browsers?। CSS3 transition events
यह एक बहुत पूर्ण उत्तर है स्वीकार किए गए एक से। यह और अधिक अपरिवर्तित क्यों नहीं है। – Wes
'ट्रांज़िशन एंडेड' में 'ट्रांज़िशन एंडेड हैंडलर' को कॉल करना याद रखें (या 'ट्रांजिशन एंडेड' द्वारा 'ट्रांजिशन एंडेड हैंडलर' को 'एडइवेंट लिस्टनर' और 'हटाएं' लिस्टनर 'में बदलें और' ट्रांजिशन एंडेड 'में' ट्रांज़िशन एंडेड 'कॉल करें' – Miquel
धन्यवाद @ मिकेल; मुझे लगता है कि जब मैं 'ट्रांजिशन एंडेड हैंडलर' का मतलब था तो मैंने अभी 'ट्रांजिशन एंडेड' का इस्तेमाल किया था। –
jQuery.transit plugin, CSS3 परिवर्तनों और बदलाव के लिए एक प्लगइन, स्क्रिप्ट से अपने CSS एनिमेशन कॉल करेगा और आपको एक कॉलबैक दे सकते हैं - :
नोट: इस सवाल का भी से संबंधित है।
मैं निम्नलिखित कोड का उपयोग कर रहा हूं, यह पता लगाने की कोशिश करने से कहीं अधिक सरल है कि ब्राउजर किस विशिष्ट अंत घटना का उपयोग करता है।
$(".myClass").one('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd',
function() {
//do something
});
वैकल्पिक रूप से, अगर आप बूटस्ट्रैप का उपयोग तो आप बस
$(".myClass").one($.support.transition.end,
function() {
//do something
});
क्या कर सकते हैं यह वह जगह है क्योंकि वे bootstrap.js में निम्नलिखित
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
'WebkitTransition' : 'webkitTransitionEnd',
'MozTransition' : 'transitionend',
'OTransition' : 'oTransitionEnd otransitionend',
'transition' : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false, $el = this
$(this).one($.support.transition.end, function() { called = true })
var callback = function() { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function() {
$.support.transition = transitionEnd()
})
}(jQuery);
यह धीमा है क्योंकि घटना को यह देखने के लिए हर बार उस संपूर्ण सूची को खोजना पड़ता है कि यह सही है या नहीं। – phreakhead
@ फ़्रीकहेड इनमें से किसी भी दृष्टिकोण का प्रदर्शन बहुत समान होगा – Tom
- 1. नए तत्वों पर सीएसएस संक्रमण
- 2. होवर पर सीएसएस संक्रमण फीका
- 3. सीएसएस संक्रमण
- 4. सीएसएस संक्रमण
- 5. साफ़ सीएसएस संक्रमण
- 6. स्केल पर सीएसएस 3 संक्रमण केवल
- 7. सीएसएस: माउस-आउट पर अस्पष्टता संक्रमण?
- 8. सीएसएस संक्रमण: होवर
- 9. सीएसएस: मंडराना संक्रमण
- 10. सीएसएस वेबकिट संक्रमण -
- 11. कम्पास एकाधिक सीएसएस संक्रमण
- 12. बच्चे तत्व के लिए होवर पर सीएसएस संक्रमण
- 13. किसी तत्व पर एकाधिक सीएसएस संक्रमण कैसे हैं?
- 14. सभी तत्वों पर सीएसएस संक्रमण डालने की लागत
- 15. CSS3 - डीओएम हटाने पर संक्रमण
- 16. होवर पर संक्रमण रंग फीका?
- 17. ट्विटर बूटस्ट्रैप हिंडोला - सीएसएस संक्रमण फ़ायरफ़ॉक्स
- 18. सीएसएस संक्रमण मिश्रण निरपेक्ष और सापेक्ष स्थिति
- 19. पृष्ठभूमि छवि पर CSS3 संक्रमण
- 20. सीएसएस संक्रमण जब कक्षा हटा दी गई
- 21. सीएसएस 3 बटन पृष्ठभूमि रंग अनंत संक्रमण
- 22. कई गुणों के साथ सीएसएस संक्रमण शॉर्टेंड?
- 23. पृष्ठभूमि ढाल के साथ सीएसएस संक्रमण
- 24. सीएसएस संक्रमण आसानी से काम नहीं कर
- 25. सीएसएस संक्रमण अवधि के लिए इकाइयां
- 26. एकाधिक संक्रमण होने पर मैं 'विशिष्ट' तत्व पर एक सीएसएस संक्रमण के अंत का पता कैसे लगा सकता हूं?
- 27. सीएसएस संक्रमण जब तक कि मैं समय समाप्ति
- 28. संक्रमण प्रभाव
- 29. CSS3 संक्रमण
- 30. वेबकिट में फ़ॉन्ट संक्रमण गड़बड़ाना CSS3 संक्रमण?
में http: // stackoverflow। कॉम/प्रश्न/5023514/कैसे-करें-i-normalize-css3-transition-functions-over-browser – zloctb