Y a-t-il des événements déclenchés par un élément pour vérifier si une transition css3 a commencé ou se termine?
la source
Y a-t-il des événements déclenchés par un élément pour vérifier si une transition css3 a commencé ou se termine?
L'achèvement d'une transition CSS génère un événement DOM correspondant. Un événement est déclenché pour chaque propriété qui subit une transition. Cela permet à un développeur de contenu d'effectuer des actions qui se synchronisent avec l'achèvement d'une transition.
Pour déterminer quand une transition se termine, définissez une fonction d'écoute d'événement JavaScript pour l'événement DOM qui est envoyé à la fin d'une transition. L'événement est une instance de WebKitTransitionEvent et son type est
webkitTransitionEnd
.
box.addEventListener( 'webkitTransitionEnd',
function( event ) { alert( "Finished transition!" ); }, false );
Un seul événement est déclenché lorsque les transitions sont terminées. Dans Firefox, l'événement est
transitionend
, dans OperaoTransitionEnd
, et dans WebKit il l'estwebkitTransitionEnd
.
Il existe un type d'événement de transition disponible. L'
oTransitionEnd
événement se produit à la fin de la transition.
L'
transitionend
événement se produit à la fin de la transition. Si la transition est supprimée avant la fin, l'événement ne se déclenchera pas.
Stack Overflow: Comment normaliser les fonctions de transition CSS3 dans les navigateurs?
Mettre à jour
Tous les navigateurs modernes prennent désormais en charge l'événement sans préfixe:
element.addEventListener('transitionend', callback, false);
https://caniuse.com/#feat=css-transitions
J'utilisais l'approche donnée par Pete, mais j'ai maintenant commencé à utiliser ce qui suit
Alternativement, si vous utilisez bootstrap, vous pouvez simplement faire
C'est parce qu'ils incluent les éléments suivants dans bootstrap.js
Notez qu'ils incluent également une fonction emulateTransitionEnd qui peut être nécessaire pour garantir qu'un rappel se produit toujours.
http://blog.alexmaccaw.com/css-transitions
la source
Tous les navigateurs modernes prennent désormais en charge l'événement sans préfixe:
element.addEventListener('transitionend', callback, false);
Fonctionne dans les dernières versions de Chrome, Firefox et Safari. Même IE10 +.
la source
Dans Opera 12, lorsque vous liez en utilisant le JavaScript brut, 'oTransitionEnd' fonctionnera:
cependant si vous liez via jQuery, vous devez utiliser 'otransitionend'
Si vous utilisez Modernizr ou bootstrap-transition.js, vous pouvez simplement faire un changement:
Vous pouvez également trouver des informations ici http://www.ianlunn.co.uk/blog/articles/opera-12-otransitionend-bugs-and-workarounds/
la source
Juste pour le plaisir, ne fais pas ça!
la source
Si vous souhaitez simplement détecter une seule fin de transition, sans utiliser de framework JS, voici une petite fonction utilitaire pratique:
Usage:
puis si vous souhaitez annuler à un moment donné, vous pouvez toujours le faire avec
C'est également bon pour d'autres usages événementiels :)
la source