Permiten pasar un estilo CSS a otro a partir de un cambio de estado del elemento HTML (:hover, :focus, :active, etc).
Son gestionadas mediante 4 propiedades CSS.
transition-delay
transition-duration
transition-property
transition-timing-functionLas cuales se pueden resumir en una única propiedad CSS
transitionSupongamos el siguiente código HMTL y CSS
<div class="redondo verdosa"></div>.redondo {
height: 100px;
width: 100px;
border-radius: 50px;
}
.verdosa {
background-color: #00CED1;
}Posibles valores para la propiedad transition-property.
background
background-color
background-position
background-size
border
border-bottom
border-bottom-color
border-bottom-left-radius
border-bottom-right-radius
border-bottom-width
border-color
border-left
border-left-color
border-left-width
border-right
border-right-color
border-right-width
border-spacing
border-top
border-top-colorborder-top-left-radius
border-top-right-radius
border-top-width
bottom
color
font
font-size
font-size-adjust
font-stretch
font-weight
height
left
letter-spacing
line-height
margin
margin-bottom
margin-left
margin-right
margin-topmax-height
max-width
min-height
min-width
opacity
padding
padding-bottom
padding-left
padding-right
padding-top
right
text-decoration-color
text-indent
top
vertical-align
visibility
width
word-spacing
z-indexPodemos expresar el tiempo de la transicion usando segundos o milisegundos.
.efecto {
transition-duration: 2s;
}
.efecto2 {
transition-duration: 0.5s;
}
.efecto3 {
transition-duration: 200ms;
}Agregamos una transicion mediante 2 propiedades CSS: transition-property y transition-duration.
.efecto {
transition-property: width, height, border-radius;
transition-duration: 2s;
}
.redondo:hover {
height: 200px;
width: 200px;
border-radius: 100px;
}<div class="redondo verdosa efecto"></div>Algunos posibles valores que definen la velocidad de la transición son:
.efecto1 {
transition-timing-function: ease;
}
.efecto2 {
transition-timing-function: linear;
}
.efecto3 {
transition-timing-function: ease-in;
}
.efecto4 {
transition-timing-function: ease-out;
}
.efecto5 {
transition-timing-function: ease-in-out;
}Permiten modificar un elemento HTML cambiando su tamaño, posición y visibilidad.
Para lograrlo solo utiliza dos propiedades y según su valor sera el tipo de transformación a realizar.
El valor rotate de la propiedad transform nos permite rotar un elemento en función de su posición original.
<div class="caja rotada-20"></div>
<div class="caja rotada-50"></div>.caja {
height: 100px;
width: 100px;
background: #00CED1;
margin: 50px;
}
.rotada-20 {
transform: rotate(20deg);
}
.rotada-50 {
transform: rotate(50deg);
}El valor scale de la propiedad transform nos permite aumentar el tamaño de un elemento.
<div class="caja"></div>
<div class="caja doble"></div>.caja {
height: 100px;
width: 100px;
background: #00CED1;
margin: 100px;
}
.doble {
transform: scale(2);
}Podemos aumentar un solo eje, o los ambos de forma dispares usando scaleX y scaleY.
El valor translate de la propiedad transform nos permite mover un elemento en función de su posición original.
<div class="caja"></div>
<div class="caja transladado"></div>.caja {
height: 100px;
width: 100px;
background: #00CED1;
margin: 50px;
}
.transladado {
transform: translate(20%);
}Podemos moverlo un solo eje, o los ambos de forma dispares usando translateX y translateY.
El valor skew de la propiedad transform nos permite distorsionar un elemento.
<div class="caja"></div>
<div class="caja distorcion"></div>.caja {
height: 100px;
width: 100px;
background: #00CED1;
margin: 50px;
}
.distorcion {
transform: skew(10deg,5deg);
}Podemos distorcionarlo un solo eje, o los ambos de forma dispares usando skewX y skewY.
La propiedad transform nos permite modificar la perspectiva del elemento HTML de forma tal que nos permite generar un efecto 3D sobre el mismo.
El valor perspective de la propiedad transform nos permite representar un elemento en 3D.
<div class="caja"></div>
<div class="caja tridimencional"></div>.caja {
height: 100px;
width: 100px;
background: #00CED1;
margin: 50px;
}
.tridimencional {
transform: perspective(200px) rotateX(45deg);
}Al cambiar la perspectiva podemos utilizar los siguientes valores skewZ, rotateZ, scaleZ, translateZ.
Permiten animar la transición entre un estilo CSS y otro pero con la particularidad de poder definir varios estados intermedios.
Son gestionadas mediante 8 propiedad CSS.
animation-delay
animation-direction
animation-duration
animation-iteration-count
animation-name
animation-play-state
animation-timing-function
animation-fill-modeLas cuales se pueden resumir en una única propiedad CSS
animationSupongamos el siguiente código HMTL y CSS
<div class="redondo verdosa"></div>.redondo {
height: 100px;
width: 100px;
border-radius: 50px;
}
.verdosa {
background-color: #00CED1;
}Mediante animation-name le definimos un nombre a nuestra animación.
.animado {
animation-duration: 3s;
animation-name: ingresa;
}Ahora podemos definir como serán los fotogramas de nuestra animación.
<div class="redondo verdosa animado"></div>Definimos los fotogramas utilizando la regla @keyframes.
.animado {
animation-duration: 3s;
animation-name: ingresa;
}
@keyframes ingresa {
from {
margin-left: 100%;
}
to {
margin-left: 0%;
}
}Podemos agregar fotogramas intermedios utilizando porcentajes en función de la duración de la animación.
@keyframes ingresa {
from {
margin-left: 100%;
}
30% {
margin-left: 50%;
}
60% {
margin-left: 100%;
}
to {
margin-left: 0%;
}
}Mediante animation-iteration-count definimos el numero de veces que se repetirá nuestra animación.
.animado {
animation-duration: 3s;
animation-name: ingresa;
animation-iteration-count: 2;
}Podemos utilizar el valor infinite para repetir la animación constantemente.
Mediante animation-direction definimos la dirección que tomara nuestra animación.
.animado {
animation-duration: 3s;
animation-name: ingresa;
animation-iteration-count: 2;
animation-direction: alternate;
}Esta regla puede tomar los siguientes valores: normal, alternate, reverse y alternate-reverse.
Mediante animation-timing-function definimos la velocidad de nuestra animación.
.animado {
animation-duration: 3s;
animation-name: ingresa;
animation-iteration-count: 2;
animation-direction: alternate;
animation-timing-function: ease-in-out;
}Esta regla puede tomar los siguientes valores: ease, linear, ease-in, ease-out y ease-in-out.
Mediante animation-delay definimos una demora en nuestra animación lo que nos permite esperar segundos o mili segundos antes de iniciarla.
.animado {
animation-duration: 3s;
animation-name: ingresa;
animation-iteration-count: 2;
animation-direction: alternate;
animation-timing-function: ease-in-out;
animation-delay: 2s;
}Esta regla puede tomar valores expresados en:
segundos (s) o mili segundos (ms).
Mediante animation-play-state podemos pausar y reanudar nuestra animación.
.animado {
animation-duration: 3s;
animation-name: ingresa;
animation-iteration-count: 2;
animation-direction: alternate;
animation-timing-function: ease-in-out;
animation-delay: 2s;
}
.animado:active {
animation-play-state: paused;
}Esta regla puede tomar dos valores:
running o paused.
Mediante animation-fill-mode define la forma en la que los estilos de nuestra animación son aplicados.
.animado {
animation-duration: 3s;
animation-name: ingresa;
animation-iteration-count: 2;
animation-direction: alternate;
animation-timing-function: ease-in-out;
animation-delay: 2s;
animation-fill-mode: forwards;
}Esta regla puede tomar tres valores:
forwards, backwards y both.