Foros del Web » Creando para Internet » CSS »

Uso de @keyframes en CSS

Estas en el tema de Uso de @keyframes en CSS en el foro de CSS en Foros del Web. Hola a todos!! Estoy teniendo problemas con un efecto que quiero, me funciona el efecto en Firefox pero en Opera, Chrome...no hay forma. Os dejo ...
  #1 (permalink)  
Antiguo 23/01/2013, 02:57
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Pregunta Uso de @keyframes en CSS

Hola a todos!!

Estoy teniendo problemas con un efecto que quiero, me funciona el efecto en Firefox pero en Opera, Chrome...no hay forma.

Os dejo el código por si sabéis donde se puede estar metiendo la pata....

Código CSS:
Ver original
  1. #lista-menu .menu-item a:hover {color:#FFD324 !important;
  2.       animation: moveFromTop 300ms ease-in-out;
  3.       -moz-animation:moveFromTop 300ms ease-in-out;
  4.       -webkit-animation: moveFromTop 300ms ease-in-out; }
  5. @keyframes moveFromBottom {
  6.     from {transform: translateX(50px);}
  7.     to {transform: translateX(0%);}
  8. }
  9. @keyframes moveFromTop {
  10.     from {transform: translateY(-50px);}
  11.     to {transform: translateY(0%);}
  12. }

Y el HTML está tal que así

Código HTML:
Ver original
  1. <ul id="lista-menu">
  2. <li class="menu-item">
  3. <a>Mi enlace</a>
  4. </li>
  5. </ul>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #2 (permalink)  
Antiguo 23/01/2013, 04:22
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Uso de @keyframes en CSS

No he mirado más allá de que no usas prefijos propietarios en las reglas de keyframes; -webkit, -moz, -o...

Algo así:
Código CSS:
Ver original
  1. @-webkit-keyframes {}
  #3 (permalink)  
Antiguo 23/01/2013, 05:20
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Uso de @keyframes en CSS

Cita:
Iniciado por Bonez Ver Mensaje
No he mirado más allá de que no usas prefijos propietarios en las reglas de keyframes; -webkit, -moz, -o...

Algo así:
Código CSS:
Ver original
  1. @-webkit-keyframes {}
Perdón, no lo puse...

Código CSS:
Ver original
  1. @keyframes moveFromBottom {from {transform: translateX(50px);}to {transform: translateX(0%);}}
  2. @-moz-keyframes moveFromBottom {from {transform: translateX(50px);}to {transform: translateX(0%);}}
  3. @-webkit-keyframes moveFromBottom {from {transform: translateX(50px);}to {transform: translateX(0%);}}
  4. @keyframes moveFromTop {from {transform: translateY(-50px);}to {transform: translateY(0%);}}
  5. @-moz-keyframes moveFromTop {from {transform: translateY(-50px);}to {transform: translateY(0%);}}
  6. @-webkit-keyframes moveFromTop {from {transform: translateY(-50px);}to {transform: translateY(0%);}}

Aún añadiendo esto sigue sin funcionar.....en Firefox sí lo hace, pero con el resto no.... :(
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #4 (permalink)  
Antiguo 23/01/2013, 06:04
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Uso de @keyframes en CSS

No sé si todos, pero la mayoría de navegadores requieren aún prefijos propietarios para transformaciones de CSS. Es decir, tienes que especificarlos dentro de @keyframes también.

Código CSS:
Ver original
  1. @-webkit-keyframes moveFromTop {
  2.   from {
  3.     -webkit-transform: translateY(-50px);
  4.   }
  5.   to {
  6.     -webkit-transform: translateY(0);
  7.   }
  8. }

En el ejemplo quité el símbolo % porque no hace falta representar la unidades de medida cuando el valor es cero, porque cero es cero en cualquier unidades. De todas formas, si usas una medida en un lado, intenta siempre que puedas usar la misma en el otro.

Para que funcione bien también deberías de poner el enlace como elemento de bloque.

Lo que escapa a mi comprensión, es que no funciona si se especifica el :hover en el enlace, pero sí en la lista.

http://jsbin.com/abazuq (sólo para Chrome/Safari)

Última edición por pzin; 23/01/2013 a las 06:41 Razón: corección de código
  #5 (permalink)  
Antiguo 23/01/2013, 06:19
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Uso de @keyframes en CSS

Cita:
Iniciado por Bonez Ver Mensaje
No sé si todos, pero la mayoría de navegadores requieren aún prefijos propietarios para transformaciones de CSS. Es decir, tienes que especificarlos dentro de @keyframes también.

Código CSS:
Ver original
  1. @-webkit-keyframes moveFromTop {
  2.   from {
  3.     transform: translateY(-50px);
  4.   }
  5.   to {
  6.     transform: translateY(0);
  7.   }
  8. }

En el ejemplo quité el símbolo % porque no hace falta representar la unidades de medida cuando el valor es cero, porque cero es cero en cualquier unidades. De todas formas, si usas una medida en un lado, intenta siempre que puedas usar la misma en el otro.

Para que funcione bien también deberías de poner el enlace como elemento de bloque.

Lo que escapa a mi comprensión, es que no funciona si se especifica el :hover en el enlace, pero sí en la lista.

http://jsbin.com/abazuq (sólo para Chrome/Safari)
Gracias por tu ayuda!

Pero tengo más dudas....

He conseguido que el código me funcione tanto en chrome como en firefox....pero por qué este código
Código CSS:
Ver original
  1. @-webkit-keyframes mueveDerecha{from{left: 0px;}to{left:50px;}}
  2. @-moz-keyframes mueveDerecha{from{left: 0px;}to{left:50px;}}
  3.  
  4. @-webkit-keyframes mueveArriba{from{top: -20px;}to{top:0px;}}
  5. @-moz-keyframes mueveArriba{from{top: -20px;}to{top:0px;}}

Si modifico las propiedades left y top por traslateX y traslateY no funciona....¿a qué es debido?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #6 (permalink)  
Antiguo 23/01/2013, 06:31
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Uso de @keyframes en CSS

Porque por defecto cualquier elemento CSS tiene posición estática. Y para usar top/right/bottom/left tienes que posicionar el elemento de forma relativa —también vale absoluta o fija, pero no viene al caso (supongo).
  #7 (permalink)  
Antiguo 23/01/2013, 06:39
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Uso de @keyframes en CSS

Cita:
Iniciado por Bonez Ver Mensaje
Lo que escapa a mi comprensión, es que no funciona si se especifica el :hover en el enlace, pero sí en la lista.
Bueno, pensando un poco, supongo que no funciona con a:hover, porque cuando pones el ratón encima del enlace y empieza la animación, termina enseguida ya que el enlace se va hacia arriba y el ratón ya no está encima del enlace. Creo que vaya a ser eso.
Tiene su lógica, aunque normalmente cuando ocurren estas cosas pasan unos parpadeos raros como aquí. Supongo que no ocurrían antes porque el enlace en su estado normal era un elemento en línea.
  #8 (permalink)  
Antiguo 23/01/2013, 06:54
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Uso de @keyframes en CSS

Cita:
Iniciado por Bonez Ver Mensaje
Bueno, pensando un poco, supongo que no funciona con a:hover, porque cuando pones el ratón encima del enlace y empieza la animación, termina enseguida ya que el enlace se va hacia arriba y el ratón ya no está encima del enlace. Creo que vaya a ser eso.
Tiene su lógica, aunque normalmente cuando ocurren estas cosas pasan unos parpadeos raros como aquí. Supongo que no ocurrían antes porque el enlace en su estado normal era un elemento en línea.
Claro tiene su lógica, pero no entiendo este caso:

- Con posicion relativa: no funcionan los traslateX ni translateY pero sí el top y left (cosa lógica como apuntas).

- Sin posición relativa: no funciona ningún tipo de aspecto, ni el translate ni el left ni top.

Y como estoy aprendiendo a usarlos por eso pregunto jejeje.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #9 (permalink)  
Antiguo 23/01/2013, 07:00
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Uso de @keyframes en CSS

Cita:
Iniciado por madman_18 Ver Mensaje
- Sin posición relativa: no funciona ningún tipo de aspecto, ni el translate ni el left ni top.
Para translate no hace falta una posición relativa. Porque son transformaciones realmente, no estás moviendo el elemento a otra posición sino transformándolo a otra posición.

De hecho, en el primer enlace, funciona translate sin posicionarlo relativamente.

Etiquetas: css3
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:28.