É possível obter uma notificação (como retorno de chamada) quando uma transição CSS foi concluída?
javascript
css
css-transitions
Pompair
fonte
fonte
Respostas:
Eu sei que o Safari implementa um retorno de chamada webkitTransitionEnd que você pode anexar diretamente ao elemento com a transição.
Seu exemplo (reformatado para várias linhas):
fonte
this
elemento dentro do callback. Mas é um parâmetro obrigatório, portanto, neste caso, está apenas cumprindo o requisito.useCaptureMode
. Quando ocorre um evento, existem duas fases - a primeira fase é o modo de captura, a segunda é o modo de bolha. No modo de captura, o evento desce do elemento do corpo para o elemento especificado. Em seguida, ele entra no modo de bolha, onde faz o inverso. Esse parâmetro falso final especifica que você deseja que o ouvinte de evento ocorra no modo de bolha. Um uso disso é anexar manipuladores de eventos imediatamente antes de serem necessários no modo de bolha. =) 37signals.com/svn/posts/…Sim, se essas coisas forem suportadas pelo navegador, um evento será disparado quando a transição for concluída. O evento real, entretanto, difere entre os navegadores:
webkitTransitionEnd
transitionend
msTransitionEnd
oTransitionEnd
No entanto, você deve estar ciente de que
webkitTransitionEnd
nem sempre dispara! Isso me surpreendeu várias vezes e parece ocorrer se a animação não tiver efeito sobre o elemento. Para contornar isso, faz sentido usar um tempo limite para disparar o manipulador de eventos no caso de não ter sido disparado conforme o esperado. Uma postagem do blog sobre esse problema está disponível aqui: http://www.cuppadev.co.uk/the-trouble-with-css-transitions/ <- 500 Internal Server ErrorCom isso em mente, eu tendo a usar este evento em um pedaço de código que se parece um pouco com isto:
Nota: para obter o nome do final do evento de transição, você pode usar o método postado como a resposta em: Como normalizo funções de transição CSS3 entre navegadores? .
Observação: esta questão também está relacionada a: - eventos de transição CSS3
fonte
transitionEndedHandler
emtransitionEnded
(ou mudançatransitionEnded
portransitionEndedHandler
emaddEventListener
eremoveEventListener
e chamadatransitionEnded
emtransitionEndedHandler
)transitionEnded
quando quis dizertransitionEndedHandler
.Estou usando o código a seguir, é muito mais simples do que tentar detectar qual evento final específico um navegador usa.
Alternativamente, se você usar bootstrap, você pode simplesmente fazer
Isso ocorre porque eles incluem o seguinte em bootstrap.js
fonte
O plugin jQuery.transit , um plugin para transformações e transições CSS3, pode chamar suas animações CSS a partir de um script e fornecer um retorno de chamada.
fonte
Isso pode ser facilmente alcançado com o
transitionend
evento, consulte a documentação aqui. Um exemplo simples:fonte