Animaciones y transiciones en CSS
Las transiciones y animaciones permiten mejorar la interacción visual de una interfaz. Deben usarse con moderación y siempre al servicio de la comprensión del usuario.
Conceptos clave
- Transition: cambio suave entre dos estados.
- Animation: secuencia de cambios definida con
@keyframes. - Duration: duración del efecto.
- Timing function: curva de aceleración.
- Transform: cambio visual sin afectar layout.
- Reduced motion: preferencia de usuario para reducir movimiento.
Transiciones
css
.button {
background-color: #2563eb;
transform: translateY(0);
transition: background-color 200ms ease, transform 200ms ease;
}
.button:hover {
background-color: #1d4ed8;
transform: translateY(-2px);
}Animaciones con keyframes
css
@keyframes fade-in {
from {
opacity: 0;
transform: translateY(8px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.panel {
animation: fade-in 250ms ease-out;
}Propiedades recomendadas
Prioriza animar:
opacitytransform
Evita animar con frecuencia:
widthheighttopleftmargin
Estas propiedades pueden provocar recalculo de layout.
Accesibilidad
Respeta la preferencia de reducir movimiento:
css
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
}
}Buenas prácticas
- Usa animaciones cortas.
- Mantén consistencia entre componentes.
- Anima para orientar, no para distraer.
- Respeta
prefers-reduced-motion. - Prueba rendimiento en dispositivos modestos.
Errores comunes
- Animar demasiados elementos a la vez.
- Usar duraciones largas en interacciones frecuentes.
- Animar propiedades que provocan layout.
- Ocultar información importante tras una animación.
- Ignorar preferencias de accesibilidad.
Chuleta rápida
css
transition: property duration timing-function;
animation: name duration timing-function;
transform: translateY(0);
opacity: 1;
@media (prefers-reduced-motion: reduce) { ... }