Existem eventos disparados por um elemento para verificar se uma transição do css3 foi iniciada ou finalizada?
fonte
Existem eventos disparados por um elemento para verificar se uma transição do css3 foi iniciada ou finalizada?
A conclusão de uma transição CSS gera um evento DOM correspondente. Um evento é disparado para cada propriedade que passa por uma transição. Isso permite que um desenvolvedor de conteúdo execute ações sincronizadas com a conclusão de uma transição.
Para determinar quando uma transição é concluída, defina uma função de ouvinte de evento JavaScript para o evento DOM que é enviado no final de uma transição. O evento é uma instância do WebKitTransitionEvent e seu tipo é
webkitTransitionEnd
.
box.addEventListener( 'webkitTransitionEnd',
function( event ) { alert( "Finished transition!" ); }, false );
Há um único evento que é acionado quando as transições são concluídas. No Firefox, o evento é
transitionend
no OperaoTransitionEnd
e no WebKitwebkitTransitionEnd
.
Existe um tipo de evento de transição disponível. O
oTransitionEnd
evento ocorre na conclusão da transição.
O
transitionend
evento ocorre na conclusão da transição. Se a transição for removida antes da conclusão, o evento não será acionado.
Estouro de pilha: Como normalizo as funções de transição CSS3 nos navegadores?
Atualizar
Todos os navegadores modernos agora suportam o evento não corrigido:
element.addEventListener('transitionend', callback, false);
https://caniuse.com/#feat=css-transitions
Eu estava usando a abordagem dada por Pete, mas agora comecei a usar o seguinte
Como alternativa, se você usar o bootstrap, poderá simplesmente fazer
Isso acontece porque eles incluem o seguinte em bootstrap.js
Observe que eles também incluem uma função emulateTransitionEnd que pode ser necessária para garantir que sempre ocorra um retorno de chamada.
http://blog.alexmaccaw.com/css-transitions
fonte
Todos os navegadores modernos agora suportam o evento não corrigido:
element.addEventListener('transitionend', callback, false);
Funciona nas versões mais recentes do Chrome, Firefox e Safari. Mesmo IE10 +.
fonte
No Opera 12, quando você liga usando o JavaScript simples, 'oTransitionEnd' funcionará:
no entanto, se você ligar através do jQuery, precisará usar 'otransitionend'
Caso esteja usando o Modernizr ou o bootstrap-transit.js, basta fazer uma alteração:
Você pode encontrar algumas informações aqui também http://www.ianlunn.co.uk/blog/articles/opera-12-otransitionend-bugs-and-workarounds/
fonte
Apenas por diversão, não faça isso!
fonte
Se você simplesmente deseja detectar apenas um único final de transição, sem usar nenhuma estrutura JS, aqui está uma pequena função de utilitário:
Uso:
se você deseja cancelar em algum momento, ainda pode fazê-lo com
Também é bom para outros usos do evento :)
fonte