Animation delay en CSS: Cómo configurar el retraso de las animaciones

| Última modificación: 17 de diciembre de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Alguna vez has querido darle a tu sitio web un toque más dinámico y atractivo? Las animaciones en CSS son una forma genial de lograrlo sin complicarte demasiado, y dentro de ellas, la propiedad animation delay es muy importante. Esta propiedad te permite retrasar el inicio de una animación, para que todo fluya con más estilo y suavidad. En este artículo te enseñaremos qué es animation delay en CSS, cómo funciona y cuáles son sus principales elementos, con algunos ejemplos que seguro te ayudarán.

Animation delay en CSS: Cómo configurar el retraso de las animaciones

¿Qué es la propiedad animation delay en CSS?

Entre las diferentes propiedades de animación en CSS, animation delay es la que define cuánto tiempo debe esperar una animación antes de comenzar. En otras palabras, le dices al navegador que retrase el inicio de una transición durante X tiempo, para lo cual puedes especificar segundos (s) o milisegundos (ms).

Por ejemplo, imagina que tienes un botón en el que quieres aplicar una animación de cambio de color al pasar el cursor. Si usas animation delay, puedes hacer que este cambio no ocurra de inmediato, sino después de un pequeño retraso. Este tipo de detalles pueden mejorar la experiencia del usuario al dar un efecto más controlado y fluido.

<!DOCTYPE html>
<html lang="es">
<head>
<style>
@keyframes cambiarColor {
from { background-color: #3498db; }
to { background-color: #2ecc71; }
}
button {
background-color: #3498db;
color: white;
padding: 10px 20px;
border: none;
cursor: pointer;
animation-name: cambiarColor;
animation-duration: 3s;
animation-delay: 0.5s; /* Agrega un retraso antes de iniciar la animación */
animation-fill-mode: forwards;
}
button:hover {
animation-play-state: running;
}
</style>
</head>
<body>
<button>Prueba la animación</button>
</body>
</html>

En este caso, la animación del botón que cambia de color de azul a verde se inicia con un retraso de 0.5 segundos. Esto genera un efecto más suave y controlado que puede resultar más agradable para el usuario al interactuar con el botón.

¿Para qué sirve animation delay?

Si te preguntas por qué deberías usar esta propiedad, te presentamos algunos de sus principales usos:

Mejora la experiencia del usuario

Las animaciones suaves y bien temporizadas captan la atención del usuario y hacen que la navegación sea mucho más intuitiva. Por ejemplo, un menú que aparece con un leve retraso genera una sensación más pulida y profesional que uno que aparece de golpe.

Permite un mayor control creativo

Al usar animation delay, puedes escalonar las animaciones para que ocurran en momentos específicos. Esto es perfecto cuando quieres que los elementos aparezcan en un orden determinado o contar una pequeña “historia visual” en tu interfaz.

Es fácil de implementar

Para crear este tipo de efectos, no necesitas librerías externas ni herramientas avanzadas como JavaScript. En cambio, con unas pocas líneas de CSS, puedes lograr efectos agradables y funcionales que mejoran el aspecto de tu sitio web. Además, es compatible con todos los navegadores modernos.

Sintaxis de animation delay en CSS

Al igual que las demás propiedades de animación en CSS, animation delay tiene una sintaxis bastante sencilla. Veamos su estructura básica:

selector {
animation-delay: valor;
}

Ahora, para comprender mejor cómo funciona esta propiedad, veamos un ejemplo de menú de navegación donde cada elemento debe aparecer con un pequeño retraso:

<!DOCTYPE html>
<html lang="es">
<head>
<style>
@keyframes aparecer {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.menu-item {
opacity: 0;
animation-name: aparecer;
animation-duration: 0.5s;
animation-fill-mode: forwards;
margin: 5px 0;
}
.menu-item:nth-child(1) {
animation-delay: 0.2s;
}
.menu-item:nth-child(2) {
animation-delay: 0.4s;
}
.menu-item:nth-child(3) {
animation-delay: 0.6s;
}
.menu-item:nth-child(4) {
animation-delay: 0.8s;
}
</style>
</head>
<body>
<ul>
<li class="menu-item">Inicio</li>
<li class="menu-item">Servicios</li>
<li class="menu-item">Acerca de</li>
<li class="menu-item">Contacto</li>
</ul>
</body>
</html>

En este ejemplo, primero, definimos la animación con @keyframes, donde los elementos pasan de ser invisibles y estar desplazados ligeramente hacia abajo, a ser completamente visibles y en su posición original. Luego, aplicamos esta animación a cada elemento del menú usando la clase .menu-item, con una duración de 0.5 segundos y asegurándonos de que la animación mantenga el estado final con animation-fill-mode: forwards. Finalmente, usamos animation-delay en cada elemento del menú con diferentes valores (0.2s, 0.4s, 0.6s, 0.8s) para que aparezcan de manera escalonada, creando un efecto visual más atractivo y organizado.

Valores de animation delay en CSS

Si te preguntas si hay distintos valores para esta propiedad, la respuesta es sí. Animation delay puede aceptar distintos tipos de valores para especificar el tiempo de retraso antes de que comience una animación. Veamos los más comunes:

  1. Tiempo en segundos (s) o milisegundos (ms): Es el valor que define el tiempo específico que la animación debe esperar antes de comenzar. Por ejemplo: 
animation-delay: 2s; o animation-delay: 2000ms;
  1. Valores negativos: Los valores negativos hacen que la animación comience inmediatamente desde un estado adelantado. En ese sentido, -1s significa que la animación comenzará como si ya hubiera estado en ejecución durante 1 segundo. Por ejemplo:
animation-delay: -1s;

¿Por qué es importante usar la propiedad animation delay en CSS?

En resumen, podríamos decir que usar la propiedad animation delay en CSS es una excelente manera de controlar el tiempo de inicio de tus animaciones de forma sencilla y muy efectiva. Con ella, puedes crear animaciones más suaves, ordenadas y estéticamente agradables que, además, sean funcionales y mejoren la experiencia del usuario.

Así que si estás buscando darle a tu página web un toque dinámico y profesional, no dudes en experimentar con animation delay y probar con distintos valores. También puedes combinarlos con otras propiedades para aprovechar al máximo esta función. Y si quieres continuar aprendiendo sobre CSS, HTML y otras herramientas de diseño web, te invitamos a unirte al Bootcamp de Desarrollo Web de KeepCoding. Con nuestro curso aprenderás las mejores prácticas y herramientas para crear sitios funcionales y atractivos desde cero.

¡Empieza hoy tu nueva carrera en tecnología!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado