01 Capítulo 1 · Lección 10

Errores Comunes en Transitions

Redactado por
Author Sebastian V.
Fecha de publicación

06/04/2024

Tiempo de lectura

4 min

Tema

CSS Transitions

Lo que no debes hacer

Escribir transiciones es muy fácil, pero escribir transiciones libres de bugs, con buen rendimiento y que se sientan profesionales requiere evitar algunas trampas clásicas. A continuación, exploraremos los errores más comunes.

1. Definir la transición en el pseudo-estado

Este es el error número uno. Si escribes tu regla transition: all 0.3s dentro del bloque :hover, la animación solo existirá mientras el cursor esté encima. Cuando retiras el cursor, la regla desaparece y el elemento vuelve a su estado normal bruscamente. Solución: Define siempre la transición en la clase original del elemento.

2. Animar de display: none a display: block

Como explicamos en la lección anterior, display no puede interpolarse matemáticamente. Solución: Usa opacity y visibility, o si usas frameworks de JS, usa librerías de montaje/desmontaje.

3. Animar hacia o desde "auto"

Si tienes un menú desplegable (accordion) con height: 0 y al hacer hover le pones height: auto, la transición no funcionará. El navegador necesita números exactos para calcular los fotogramas. Solución: Usa max-height (por ejemplo, transiciona de 0 a 1000px) o usa la moderna propiedad grid-template-rows: 0fr a 1fr.

Consejo profesional

La propiedad grid-template-rows: 0fr transicionada a 1fr es actualmente el estándar moderno más limpio para animar acordeones sin JavaScript ni trucos de max-height.

El error de la transición a medias

> _
<div class="bad-example">
  Hover Me!
</div>
> _
Hover Me!

Pasa el cursor por el botón rojo. Entrará suavemente (0.5s). Pero al retirar el cursor... ¡Regresará de golpe! La transición solo existía en el hover.

Errores comunes

01
Transicionar box-shadow complejo en móviles Animar sombras muy difuminadas en dispositivos móviles de gama baja puede hacer que toda la página baje a 15fps.
02
Cambiar font-weight Si cambias el font-weight en hover, no solo no se animará, sino que reacomodará todo el texto de tu página causando un salto molesto.

Practica lo aprendido

Corrige errores comunes antes de que lleguen a producción.

01 No transiciones width, height, margin o top/left si es posible.
02 Usa transform y opacity en su lugar (son procesados por la GPU).
03 Evita aplicar transition en pseudo-estados (:hover, :focus). Aplícalo a la clase base.
04 Nunca uses transition: all en selectores globales como * { }.
05 No intentes animar desde un valor height: 0 hasta height: auto (no funciona).