Las trancisiones en CSS3 nos permiten animar elementos y sus propiedades sin necesidad de usar Flash o JavaScript.
Un ejemplo sería el siguiente, coloca el mouse sobre el siguiente recuadro:
Soporte de navegadores
Internet explorer no soporta la propiedad transition.
Chrome y Safari requieren el prefijo -webkit-
Firefox requiere el prefijo -moz-
Opera requiere el prefijo -o-
¡Tengo un navegador compatible! ¿Y ahora?
Las transiciones en CSS3 van de un estado inicial a uno final, cambiando una o varias propiedades de forma gradual. Para hacer esto es necesario definir que propiedad vamos a cambiar y cuánto tardará en hacerlo.
En el siguiente ejemplo cambiaremos la altura de un div:
div{
background:#FF0;
height:100px;
margin:0 auto;
width:100px;
-webkit-transition: height .5s ease-in;
-moz-transition: height .5s ease-in;
-o-transition: height .5s ease-in;
transition: height .5s ease-in;
}
Por defecto la duración de la transición es 0, por lo que si no se especifica, no tendrá efecto.
Ahora necesitamos un detonante que realice la transición. Utilizaremos el pseudoselector :hover.
div:hover{
height:150px;
}
El resultado es el siguiente:
Si queremos cambiar más de una propiedad, debemos separarlas con comas:
div:hover{
-webkit-transition: height .5s, width 1s, background .7s;
-moz-transition: height .5s, width 1s, background .7s;
-o-transition: height .5s, width 1s, background .7s;
transition: height .5s, width 1s, background .7s;
}
Estas son las propiedades de transición que se pueden utilizar:
transition Propiedad general que define todos los parámetros
transition-property Especifica que propiedad cambiará la transición, pueden ser todas (all)
transition-duration Define la duración de la transición
transition-timing-function Especifica el tipo de transición que ejecutará, ease por defecto.
transition-delay Define si habrá un retraso para iniciar la transición, es 0 por defecto.
div{
-webkit-transition-property: width;
-webkit-transition-duration: 1s;
-webkit-transition-timing-function: linear;
-webkit-transition-delay: .5s;
-moz-transition-property: width;
-moz-transition-duration: 1s;
-moz-transition-timing-function: linear;
-moz-transition-delay: .5s;
-o-transition-property: width;
-o-transition-duration: 1s;
-o-transition-timing-function: linear;
-o-transition-delay: .5s;
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: .5s;
}
Obviamente se puede definir esta misma transición con la propiedad general:
div{
-webkit-transition: width 1s linear .5s;
-moz-transition: width 1s linear .5s;
-o-transition: width 1s linear .5s;
transition: width 1s linear .5s;
}
Los diferentes tipos de transición son linear, ease, ease-in, ease-out, ease-in-out, cubic-bezier(n,n,n,n).
Para el valor de cubic-bezier las n deben ser enteros.
En el siguiente video podemos ver la utilización de las transiciones: