Vamos a mostrar como crear animaciones personalizadas en CSS utilizando keyframes, para nuestro ejemplo crearemos una simple animación de fadeIn y otra con rotación, pero pueden realizarse efectos combinando cualquier atributo que sea animable.
Comenzaremos creando una clase genérica a todas nuestras animaciones en la que vamos a especificar el modo y el tiempo de la animación, luego definiremos los fotogramas de la secuencia de animación con keyframes y finalmente una clase para poder utilizar esa secuencia.
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
Creando la animación de fadeIn:
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadeIn {
animation-name: fadeIn;
}
El objetivo de separar el tipo de animación en una clase (.fadeIn) es que podamos crear tantas clases como animaciones consideremos necesarias.
Sumando una animación de rotación:
@keyframes rotate {
to {
transform: rotate(360deg);
}
}
.rotate{
animation-name: rotate;
}
Para utilizar las animaciones creadas simplemente añadimos las clases a nuestros elementos html:
<p class="animated fadeIn">Texto animado con nuestro fadeIn</p> <p class="animated rotate">Texto animado con nuestro rotate</p>
Una buena práctica es, también, crear clases para manejar diferentes velocidades de animaciones.
.fast {
-webkit-animation-duration: 0.5s;
animation-duration: 0.5s;
}
.slow {
-webkit-animation-duration: 1.5s;
animation-duration: 1.5s;
}
<p class="animated fadeIn">Texto animado con nuestro fadeIn</p> <p class="animated fadeIn fast">Texto animado con nuestro fadeIn en velocidad rápida</p> <p class="animated rotate">Texto animado con nuestro rotate</p> <p class="animated rotate slow">Texto animado con nuestro rotate en velocidad lenta</p>