texto para keyframes imagenes examples ejemplos avanzadas animaciones animacion css css3 css-animations

para - Detener una animación CSS3 en el último fotograma



animation css examples (8)

Tengo una animación de 4 partes de CSS3 que se reproduce al hacer clic, pero la última parte de la animación tiene como objetivo sacarla de la pantalla.

Sin embargo, siempre vuelve a su estado original una vez que se ha reproducido. Alguien sabe cómo puedo detenerlo en su último marco CSS (100%) , o bien cómo deshacerse de todo el div en el que se encuentra una vez que ha jugado.

@keyframes colorchange { 0% { transform: scale(1.0) rotate(0deg); } 50% { transform: rotate(340deg) translate(-300px,0px) } 100% { transform: scale(0.5) rotate(5deg) translate(1140px,-137px); } }


-webkit-animation-fill-mode: forwards; /* Safari 4.0 - 8.0 */ animation-fill-mode: forwards;

Soporte del navegador

  • Chrome 43.0 (4.0 -webkit-)
  • IE 10.0
  • Mozilla 16.0 (5.0 -moz-)
  • Shafari 4.0 -webkit-
  • Opera 15.0 -webkit- (12.112.0 -o-)

Uso:-

.fadeIn { animation-name: fadeIn; -webkit-animation-name: fadeIn; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-timing-function: ease; -webkit-animation-timing-function: ease; animation-fill-mode: forwards; -webkit-animation-fill-mode: forwards; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @-webkit-keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }


¿No es su problema que está configurando el webkitAnimationName de nuevo en la nada, por lo que está restableciendo el CSS de su objeto a su estado predeterminado. ¿No se quedará donde terminó si solo eliminas la función setTimeout que está restableciendo el estado?


Acabo de publicar una respuesta similar, y es probable que desee echar un vistazo a:

http://www.w3.org/TR/css3-animations/#animation-events-

Puedes descubrir aspectos de una animación, como iniciar y detener, y luego, una vez que dices que se ha disparado el evento ''detener'', puedes hacer lo que quieras con la dom. Probé esto hace un tiempo, y puede funcionar, pero supongo que por el momento estarás restringido al webkit (pero probablemente ya lo hayas aceptado). Por cierto, ya que he publicado el mismo enlace para 2 respuestas, ofrezco este consejo general: echa un vistazo al W3C: escriben las reglas y describen los estándares. Además, las páginas de desarrollo de webkit son muy importantes.



Hoy aprendí que hay un límite que quieres usar para el modo de relleno. Esto es de un desarrollador de Apple. El rumor es * alrededor de * seis, pero no es seguro. Alternativamente, puede establecer el estado inicial de su clase a cómo desea que termine la animación, luego * initialize * it desde / 0%.


La mejor forma parece poner el estado final en la parte principal de css. Al igual que aquí, puse ancho a 220px , por lo que finalmente se convierte en 220px . Pero comenzando a 0px;

div.menu-item1 { font-size: 20px; border: 2px solid #fff; width: 220px; animation: slide 1s; -webkit-animation: slide 1s; /* Safari and Chrome */ } @-webkit-keyframes slide { /* Safari and Chrome */ from {width:0px;} to {width:220px;} }


Nadie realmente lo trajo así, la forma en que se hizo funcionar es animation-play-state configurado en pausa.


Si desea agregar este comportamiento a una definición de propiedad de animation abreviada, el orden de las subpropiedades es el siguiente

animation-name predeterminado none

animation-duration - 0s predeterminado

animation-timing-function - ease defecto

animation-delay - default 0s

animation-iteration-count - default 1

animation-direction - predeterminado normal

animation-fill-mode - necesitas configurar esto para forwards

animation-play-state - running predeterminada

Por lo tanto, en el caso más común, el resultado será algo como esto

animation: colorchange 1s ease 0s 1 normal forwards;

Vea la documentación de MDN aquí