Give each element's animation-delay (or transition-delay) as its index times a fixed interval. Too large a gap feels sluggish; too small and you can't tell it's staggered at all. 30–80ms is a common range.
It's common on card grids, notification lists, and onboarding checklists — it signals "these belong to one group" while softening the feeling of the whole screen changing at once.
CSS's animation-delay only applies to the first play, but if each element's value differs, that phase offset carries through every subsequent loop — which is why the stagger keeps repeating even on an infinite animation.
When to use
Works well for 6–12 items. Beyond that the total delay grows too long — shrink the interval or skip staggering.