Loading button
Replace or accompany the action label with a compact spinner while work is pending.
Disable duplicate submission but keep the original action understandable in the pending label.
animation: spin 700ms linear infinite;Action response
Feedback closes the loop between an action and the system response. It should arrive near the control that caused it, use plain text alongside color or motion, and remain long enough to be understood without slowing the next task.
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.
Replace or accompany the action label with a compact spinner while work is pending.
Disable duplicate submission but keep the original action understandable in the pending label.
animation: spin 700ms linear infinite;Use one short horizontal shake to direct attention to an invalid field.
Pair it with an error message and stop after one cycle; repeated shaking becomes noise.
animation: shake 240ms ease-out 1;Resolve a pending state into a stable success mark and concise label.
Keep the result visible after the drawing animation completes.
animation: check-in 220ms cubic-bezier(.34, 1.56, .64, 1);Change “Copy” to “Copied” beside the same control after clipboard success.
Only confirm after the clipboard promise succeeds, and restore the original label calmly.
transition: color 150ms ease-out, opacity 150ms ease-out;Bring a non-blocking status message in from the nearest viewport edge.
Do not make important information disappear before keyboard and screen-reader users can reach it.
animation: notice-in 250ms ease-out;Fade and lift a short explanation beside its trigger after a deliberate hover or focus.
Open on keyboard focus too, and never hide information required to complete the task in a tooltip.
transition: opacity 150ms ease-out, translate 150ms ease-out;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.