Rotate
Redactado por
Sebastian V. Fecha de publicación
05/07/2024
Tiempo de lectura
6 min
Tema
CSS Transform
Todo gira, incluso la web
Existe un icono en particular que todos los usuarios de internet reconocen instintivamente: un círculo con una flecha, o simplemente un arco de círculo. Lo interpretamos como "cargando", "procesando", "espera un momento". No hay texto que lo acompañe. No hace falta. El giro continuo es un lenguaje universal.
Todos esos spinners, loaders y indicadores de carga que ves en aplicaciones como Gmail, Figma o Notion están hechos con exactamente dos líneas de CSS: un @keyframes que va de rotate(0deg) a rotate(360deg), y una propiedad animation que lo ejecuta en bucle infinito.
¿Qué es rotate()?
rotate() gira un elemento alrededor de su punto de origen (que por defecto es su centro exacto). El ángulo de rotación se expresa en grados (deg):
- Rotaciones positivas (ej. 45deg): Giran el elemento en sentido horario.
- Rotaciones negativas (ej. -45deg): Giran el elemento en sentido antihorario.
- 360deg: Una vuelta completa, volviendo al punto de partida. La base de todos los spinners.
- Unidades adicionales: También puedes usar
turn(1turn = 360deg) orad(radianes).
Transformaciones que convierten iconos
Una de las aplicaciones más elegantes de rotate() en las interfaces modernas es la conversión de un icono en otro mediante la rotación. El ejemplo más clásico: el icono de menú hamburguesa (≡) que se convierte en una X cuando el menú se abre.
Si tienes tres líneas paralelas y rotas el contenedor 45 grados, las líneas diagonales que se cruzan crean visualmente una X. Esto elimina la necesidad de cambiar el icono SVG, intercambiar imágenes o manipular el DOM: una simple rotación lo hace todo.
Casos reales
- Loaders y Spinners: De 0deg a 360deg en bucle infinito. El más usado de todos.
- Iconos de acordeón: Una flecha (›) rota 90deg cuando el contenido se despliega para indicar que apunta hacia abajo.
- Interruptores hamburguesa → X: El menú hamburguesa rota para convertirse en un botón de cierre.
- Efectos decorativos: Estrellas, formas geométricas que giran como elemento visual de landing pages.
- Cartas y tarjetas flip: Combinadas con rotateY en 3D para el efecto de voltear una tarjeta.
Consejo profesional
Para los loaders, usa siempre linear como función de timing (animation-timing-function: linear). Los eases como ease-in o ease-out hacen que el spinner acelere y frene en cada vuelta, lo que se percibe como un movimiento raro y artificial. La rotación continua debe ser siempre constante.
Rotación en contexto real
<div class="loader-contenedor">
<div class="loader-spinner"></div>
<p>Procesando tu solicitud...</p>
</div> Procesando tu solicitud...
Un spinner clásico construido con solo CSS. Observa cómo un borde de color en un círculo, rotando continuamente, crea la ilusión perfecta de carga.
Errores comunes
Construye un loader
Crea tu propio spinner de carga usando solo CSS. Luego construye un acordeón donde la flecha del título rota 180 grados cuando el contenido está visible.