Skeleton shimmer
Sweep a low-contrast highlight across placeholder shapes that match the incoming content.
Keep the shimmer subtle and remove it entirely for reduced-motion users.
animation: shimmer 1.6s ease-in-out infinite;Waiting states
Waiting feedback should match what the system actually knows. Use determinate progress when a real percentage exists, a spinner for a compact unknown wait, and a skeleton when preserving the incoming layout reduces perceived delay.
Pattern examples
Hover, focus, press, or toggle the specimens. Each recipe keeps the durable state in semantic markup and uses animation as a supporting layer.
Sweep a low-contrast highlight across placeholder shapes that match the incoming content.
Keep the shimmer subtle and remove it entirely for reduced-motion users.
animation: shimmer 1.6s ease-in-out infinite;Animate a bar toward the latest known completion value without implying more precision than exists.
Expose the numeric value through a progress element or an equivalent accessible name and value.
transition: inline-size 300ms ease-out;Place a small rotating indicator inside the control that started the work.
Use it for short waits; graduate to labeled progress when the task lasts longer.
animation: spin 700ms linear infinite;Stagger three quiet dots to show that a conversational or background response is still forming.
Keep all dots visible in the reduced-motion fallback so the status does not vanish.
animation: dot-pulse 900ms ease-in-out infinite;
animation-delay: calc(var(--i) * 120ms);Implementation check
Test keyboard focus, touch, reduced motion, slow work, failure, repeated activation, and the final resting state. A robust interaction remains understandable when every transition is removed.
@media (prefers-reduced-motion: reduce) {
.motion {
animation: none;
transform: none;
transition-duration: 0.01ms;
}
}Continue the reference
Compare the neighboring feedback patterns before choosing an effect.
Map the components and states around these interactions, then generate the project structure from one visual workspace.
We'd like to use Google cookies to understand how Nodlume is used and to measure our advertising. Nothing loads until you choose, and declining does not affect anything in the app.