Staggered reveal
GPUAparición secuencial y ordenada de elementos de una lista o menú para guiar el flujo visual del usuario.
opacity, transformcubic-bezier(0.16, 1, 0.3, 1).stagger-list {
--stagger-delay: 0.1s;
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.stagger-item {
animation: staggerFadeIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
animation-delay: calc(var(--stagger-index, 0) * var(--stagger-delay, 0.1s));
}
@keyframes staggerFadeIn {
from {
opacity: 0;
transform: translateY(14px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.stagger-item {
animation: none !important;
opacity: 1 !important;
transform: none !important;
}
}<ul class="stagger-list">
<li class="stagger-item" style="--stagger-index: 0;">
<span class="stagger-bullet">1</span>
<span class="stagger-text">Primer elemento cargado</span>
</li>
<li class="stagger-item" style="--stagger-index: 1;">
<span class="stagger-bullet">2</span>
<span class="stagger-text">Segundo elemento cargado</span>
</li>
<li class="stagger-item" style="--stagger-index: 2;">
<span class="stagger-bullet">3</span>
<span class="stagger-text">Tercer elemento cargado</span>
</li>
</ul><!-- HTML -->
<ul class="stagger-list">
<li class="stagger-item" style="--stagger-index: 0;">
<span class="stagger-bullet">1</span>
<span class="stagger-text">Primer elemento cargado</span>
</li>
<li class="stagger-item" style="--stagger-index: 1;">
<span class="stagger-bullet">2</span>
<span class="stagger-text">Segundo elemento cargado</span>
</li>
<li class="stagger-item" style="--stagger-index: 2;">
<span class="stagger-bullet">3</span>
<span class="stagger-text">Tercer elemento cargado</span>
</li>
</ul>
<!-- CSS -->
<style>
.stagger-list {
--stagger-delay: 0.1s;
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.stagger-item {
animation: staggerFadeIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
animation-delay: calc(var(--stagger-index, 0) * var(--stagger-delay, 0.1s));
}
@keyframes staggerFadeIn {
from {
opacity: 0;
transform: translateY(14px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.stagger-item {
animation: none !important;
opacity: 1 !important;
transform: none !important;
}
}
</style>// tailwind.config.js — Configuración para Staggered reveal
module.exports = {
theme: {
extend: {
animation: {
'staggered-reveal': 'staggered-reveal 0.5s cubic-bezier(0.16, 1, 0.3, 1) infinite',
},
keyframes: {
'staggered-reveal': {
/* Clases y keyframes coordinados de Staggered reveal */
},
},
},
},
};
<!-- Clases arbitrarias en Tailwind CSS -->
<div class="animate-[staggered-reveal_0.5s_cubic-bezier(0.16, 1, 0.3, 1)]">
<!-- .stagger-list -->
</div>