¿Es posible recibir una notificación (como devolución de llamada) cuando se ha completado una transición de CSS?
javascript
css
css-transitions
Pompair
fuente
fuente
Respuestas:
Sé que Safari implementa una devolución de llamada webkitTransitionEnd que puede adjuntar directamente al elemento con la transición.
Su ejemplo (reformateado a varias líneas):
fuente
this
elemento dentro de la devolución de llamada. Pero es un parámetro obligatorio, por lo que en este caso solo cumple con el requisito.useCaptureMode
. Cuando ocurre un evento, hay dos fases: la primera fase es el modo de captura, la segunda es el modo de burbuja. En el modo de captura, el evento desciende del elemento del cuerpo al elemento especificado. Luego ingresa al modo burbuja, donde hace lo contrario. Ese parámetro falso final especifica que desea que el detector de eventos se produzca en modo burbuja. Un uso de esto es adjuntar controladores de eventos justo antes de que se necesiten en el modo de burbuja. =) 37signals.com/svn/posts/…Sí, si el navegador admite tales cosas, se activa un evento cuando se completa la transición. Sin embargo, el evento real difiere entre los navegadores:
webkitTransitionEnd
transitionend
msTransitionEnd
oTransitionEnd
Sin embargo, debe tener en cuenta que
webkitTransitionEnd
no siempre se dispara. Esto me ha sorprendido varias veces y parece ocurrir si la animación no tuviera ningún efecto en el elemento. Para evitar esto, tiene sentido utilizar un tiempo de espera para activar el controlador de eventos en el caso de que no se active como se esperaba. Una publicación de blog sobre este problema está disponible aquí: http://www.cuppadev.co.uk/the-trouble-with-css-transitions/ <- 500 Internal Server ErrorCon esto en mente, tiendo a usar este evento en un fragmento de código que se parece un poco a esto:
Nota: para obtener el nombre final del evento de transición, puede usar el método publicado como respuesta en: ¿Cómo normalizo las funciones de transición CSS3 en los navegadores? .
Nota: esta pregunta también está relacionada con: - Eventos de transición CSS3
fuente
transitionEndedHandler
entransitionEnded
(o cambiotransitionEnded
portransitionEndedHandler
enaddEventListener
yremoveEventListener
y llamadatransitionEnded
entransitionEndedHandler
)transitionEnded
cuando quise decirtransitionEndedHandler
.Estoy usando el siguiente código, es mucho más simple que intentar detectar qué evento final específico usa un navegador.
Alternativamente, si usa bootstrap, simplemente puede hacer
Esto se debe a que incluyen lo siguiente en bootstrap.js
fuente
El complemento jQuery.transit , un complemento para transformaciones y transiciones CSS3, puede llamar a sus animaciones CSS desde el script y devolverle la llamada.
fuente
Esto se puede lograr fácilmente con el
transitionend
evento. Consulte la documentación aquí. Un ejemplo simple:fuente