Transiciones y Animación
Utilidades para animar elementos con animaciones CSS.
Clase | Estilos |
---|---|
animate-spin | animation: var(--animate-spin); /* rotar 1s linear infinito */
@keyframes spin {
to {
transform: rotate(360deg);
}
} |
animate-ping | animation: var(--animate-ping); /* ping 1s cubic-bezier(0, 0, 0.2, 1) infinito */
@keyframes ping {
75%, 100% {
transform: scale(2);
opacity: 0;
}
} |
animate-pulse | animation: var(--animate-pulse); /* pulso 2s cubic-bezier(0.4, 0, 0.6, 1) infinito */
@keyframes pulse {
50% {
opacity: 0.5;
}
} |
animate-bounce | animation: var(--animate-bounce); /* rebote 1s infinito */
@keyframes bounce {
0%, 100% {
transform: translateY(-25%);
animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
}
50% {
transform: none;
animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
} |
animate-none | animation: none; |
animate-(<custom-property>) | animation: var(<custom-property>); |
animate-[<value>] | animation: <value>; |
Usa la utilidad animate-spin
para agregar una animación de giro lineal a elementos como indicadores de carga:
<button type="button" class="bg-indigo-500 ..." disabled> <svg class="mr-3 size-5 animate-spin ..." viewBox="0 0 24 24"> <!-- ... --> </svg> Procesando…</button>
Usa la utilidad animate-ping
para hacer que un elemento escale y se desvanezca como un ping de radar o una onda en el agua—útil para cosas como insignias de notificación:
<span class="relative flex size-3"> <span class="absolute inline-flex h-full w-full animate-ping rounded-full bg-sky-400 opacity-75"></span> <span class="relative inline-flex size-3 rounded-full bg-sky-500"></span></span>
Usa la utilidad animate-pulse
para hacer que un elemento se desvanezca suavemente—útil para cosas como skeleton loaders:
<div class="mx-auto w-full max-w-sm rounded-md border border-blue-300 p-4"> <div class="flex animate-pulse space-x-4"> <div class="size-10 rounded-full bg-gray-200"></div> <div class="flex-1 space-y-6 py-1"> <div class="h-2 rounded bg-gray-200"></div> <div class="space-y-3"> <div class="grid grid-cols-3 gap-4"> <div class="col-span-2 h-2 rounded bg-gray-200"></div> <div class="col-span-1 h-2 rounded bg-gray-200"></div> </div> <div class="h-2 rounded bg-gray-200"></div> </div> </div> </div></div>
Usa la utilidad animate-bounce
para hacer que un elemento rebote hacia arriba y hacia abajo—útil para cosas como indicadores de 'desplázate hacia abajo':
<svg class="size-6 animate-bounce ..."> <!-- ... --></svg>
Para situaciones donde el usuario ha especificado que prefiere movimiento reducido, puedes aplicar condicionalmente animaciones y transiciones usando las variantes motion-safe
y motion-reduce
:
<button type="button" class="bg-indigo-600 ..." disabled> <svg class="mr-3 size-5 motion-safe:animate-spin ..." viewBox="0 0 24 24"> <!-- ... --> </svg> Procesando</button>
Usa la sintaxis animate-[<value>]
para establecer el animación basado en un valor completamente personalizado:
<div class="animate-[wiggle_1s_ease-in-out_infinite] ..."> <!-- ... --></div>
Para variables CSS, también puedes usar la sintaxis animate-(<custom-property>)
:
<div class="animate-(--my-animation) ..."> <!-- ... --></div>
Esto es solo un atajo para animate-[var(<custom-property>)]
que agrega la función var()
por ti automáticamente.
Prefija una utilidad animation
con una variante de breakpoint como md:
para aplicar la utilidad solo en tamaños de pantalla medium y superiores:
<div class="animate-none md:animate-spin ..."> <!-- ... --></div>
Aprende más sobre el uso de variantes en la documentación de variantes.
Usa las variables de tema --animate-*
para personalizar las utilidades animation en tu proyecto:
@theme { --animate-wiggle: wiggle 1s ease-in-out infinite; @keyframes wiggle { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }}
Ahora la utilidad animate-wiggle
puede ser usada en tu marcado:
<div class="animate-wiggle"> <!-- ... --></div>
Aprende más sobre la personalización de tu tema en la documentación del tema.