Performance en Transitions
Redactado por
Sebastian V. Fecha de publicación
08/04/2024
Tiempo de lectura
5 min
Tema
CSS Transitions
¿Por qué mi web se siente lenta al hacer hover?
El navegador dibuja la web en pasos: primero calcula la estructura (Layout), luego la pinta (Paint), y por último combina las capas visuales (Composite). Cada vez que transicionas una propiedad, fuerzas al navegador a hacer algunos de estos pasos repetidamente (a 60 fotogramas por segundo).
Propiedades Costosas (El cuello de botella)
Si animas el width, el margin o la posición (left/top), estás alterando la geometría de la página. El navegador tiene que recalcular la posición no solo de ese elemento, sino de todos los elementos de la página en cada fotograma. Esto exige la CPU y puede causar tirones (jank).
Las 2 Propiedades de Oro (Hardware Acceleration)
La solución es usar propiedades que se procesan directamente en la tarjeta de video del dispositivo (GPU), sin alterar la geometría de la página:
- ✦ transform: Mover (translate), escalar (scale), rotar (rotate). Al navegador le cuesta cero esfuerzo.
- ✦ opacity: Desvanecer cosas es instantáneo en la GPU.
Siempre que sea posible, debes fingir movimientos y tamaños usando transform en lugar de manipular la estructura del layout.
Consejo profesional
Si tienes una animación compleja con transform que tartamudea levemente, puedes aplicar will-change: transform; al elemento original. Esto le avisa al navegador con antelación que lo pase a la GPU.
GPU vs CPU
<div class="card-gpu">GPU (Rápido)</div>
<div class="card-cpu">CPU (Lento)</div> Aunque el resultado visual parece idéntico, por debajo ocurren cosas distintas. El primero se procesa en la tarjeta de video. El segundo hace trabajar a la CPU del dispositivo.
Errores comunes
Practica lo aprendido
Optimiza tus animaciones para que funcionen fluidas hasta en móviles antiguos.