Animaciones en CSS3: transiciones en CSS3

Hace ya tiempo que no escribo y eso no puede ser. Así que hoy os quiero hablar de animaciones, en concreto me voy a centrar en transiciones con CSS3 o como se diría en ingles CSS3 transitions.

Lo primero es sentar unas bases de lo que es una transición. Básicamente cuando hablamos de transitions en CSS3, lo que hacemos referencia es una pequeña animación de css que se ejecutará como mezcla de 2 o mas clases. En concreto una transición de CSS3, lo que indica es que propiedades cambiarán con una animación. Pero es mas fácil con un ejemplo:

.clase-indalcasa {
  -webkit-transition: all 1s ease-in-out 0.2s;
  -moz-transition: all 1s ease-in-out 0.2s;
  -ms-transition: all 1s ease-in-out 0.2s;
  -o-transition: all 1s ease-in-out 0.2s;
  transition: all 1s ease-in-out 0.2s;
}

Si nos damos cuenta del código anterior, que se repite una y otra vez para dar salida a todos los metas de navegador experimental, veremos que la sintaxis básica es:

transition: [propiedades] [duración] [functión de tiempo] [tiempo de espera, retardo]

Como podemos ver, ahora entendemos mejor que hace referencia en la clase, tomando con concepto que todos los elementos son opcionales. A continuación una explicación más detallada:

  • propiedades (properties): son las propiedades que van a ser afectadas por la transición. Es un listado separado por comas «,». Por ejemplo, si queremos aplicar a todas las propiedades de un elemento usariamos «all», mientras que si queremos afectar por ejemplo a la altura y anchura usariamos «width, height» y así ir añadiendo propiedades a las que afectar. Al final dejare una tabla con una relación de los propiedades a afectar.
  • duración (duration): la duración se indica o bien en segundos o en milisegundos. Para ello después del número de cantidad, indicamos 0.5s o 500ms para indicar medio segundo. Si tenemos varias propiedades separadas por comas, podemos indicar los tiempos de manera similar para cada una de las propiedades.
  • función de tiempo (timing function): está es quizas la configuración mas interesante, ya que nos permite indicar que función de tiempo vamos a utilizar en la transición. Por defecto hay definidas varias definidas o utilizar un cubic-bezier para definir nosotros una personalizada.
    • ease: mantiene una aceleración y frenada al principio y al final de la animación.
    • ease-in: tiene una aceleración y el final es constante hasta que termina.
    • ease-out: no tiene aceleración, sino que alcanza su tope desde el principio pero va frenando poco a poco.
    • ease-in-out: similar a ease pero con la aceleración y frenada mas prolongadas.
    • linear: es como su nombre indica, linear y constante en el tiempo
    • cubic-bezier: nos permite definir una función de curva de bezier personalizada. Esto da para todo un tema aparte y para empezar a entender que es: Curva de Bezier en Wikipedia
  • tiempo de espera, retardo (delay): al igual que la duración, se indica en segundos o milisegundos.

Ahora algunos ejemplos:

pasame
por encima

El código de este ejemplo sería:

.indalcasa-transition-hover {
  width: 100px;
  height: 100px;
  background: rgba(255, 0, 0, 0.3);
  -webkit-transition: all 2s ease-in-out;
  margin: 20px auto;
  line-height: 50px;
  text-align: center;			
}

.indalcasa-transition-hover:hover {
  width: 500px;
  height: 500px;
  background: rgba(0, 255, 0, 0.3);
  font-size: 50px;
  line-height: 250px;
  border-radius: 250px
}
<div class="indalcasa-transition-hover">pasame<br/>por encima</div>

Por último y para terminar esta breve explicación, una tabla de propiedades que se pueden o no cambiar con las transiciones.

Nombre de la propiedadTipo de valor
background-colorcolor: nombre, hexadecimal, rgb, rgba
background-imagegradientes de css
background-positionporcentaje, tamaño: pixeles, em, etc
border-bottom-colorcolor: nombre, hexadecimal, rgb, rgba
border-bottom-widthtamaño: pixeles, em, etc
border-colorcolor: nombre, hexadecimal, rgb, rgba
border-left-colorcolor: nombre, hexadecimal, rgb, rgba
border-left-widthtamaño: pixeles, em, etc
border-right-colorcolor: nombre, hexadecimal, rgb, rgba
border-right-widthtamaño: pixeles, em, etc
border-spacingtamaño: pixeles, em, etc
border-top-colorcolor: nombre, hexadecimal, rgb, rgba
border-top-widthtamaño: pixeles, em, etc
border-widthtamaño: pixeles, em, etc
bottomtamaño: pixeles, em, etc, porcentaje
colorcolor: nombre, hexadecimal, rgb, rgba
croprectangulo
font-sizetamaño: pixeles, em, etc, porcentaje
font-weightnúmero, nombre
grid-*varios
heighttamaño: pixeles, em, etc, porcentaje
lefttamaño: pixeles, em, etc, porcentaje
letter-spacingtamaño: pixeles, em, etc
line-heightnúmero, tamaño: pixeles, em, etc, porcentaje
margin-bottomtamaño: pixeles, em, etc
margin-lefttamaño: pixeles, em, etc
margin-righttamaño: pixeles, em, etc
margin-toptamaño: pixeles, em, etc
max-heighttamaño: pixeles, em, etc, porcentaje
max-widthtamaño: pixeles, em, etc, porcentaje
min-heighttamaño: pixeles, em, etc, porcentaje
min-widthtamaño: pixeles, em, etc, porcentaje
opacitynúmero de opacidad, de 0.0 a X
outline-colorcolor: nombre, hexadecimal, rgb, rgba
outline-offsetnúmero
outline-widthtamaño: pixeles, em, etc
padding-bottomtamaño: pixeles, em, etc
padding-lefttamaño: pixeles, em, etc
padding-righttamaño: pixeles, em, etc
padding-toptamaño: pixeles, em, etc
righttamaño: pixeles, em, etc, porcentaje
text-indenttamaño: pixeles, em, etc, porcentaje
text-shadowvalores
toptamaño: pixeles, em, etc, porcentaje
vertical-alignnombres, tamaño: pixeles, em, etc, porcentaje
visibilityvalores de css
widthtamaño: pixeles, em, etc, porcentaje
word-spacingtamaño: pixeles, em, etc, porcentaje
z-indexposición de entero
zoomnúmero

1 comentario en “Animaciones en CSS3: transiciones en CSS3”

  1. Pingback: Bitacoras.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio