Loaders Spinners

dylantarre/animation-principles/skills/07-by-ui-element/loaders-spinners

by dylantarre83597134ba8fNo license99 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 9 months ago

Use when creating loading indicators, spinners, progress bars, or skeleton screens to communicate system status

Instructions onlyDesign & Creative
AI-generated overview

Guides the design of loading spinners, progress bars and skeleton screens using animation principles.

What it does
This skill provides design guidance for loading indicators such as spinners, bouncing dots, progress bars and skeleton screens. It maps Disney's twelve animation principles onto loader behavior, giving timing ranges for rotations, bounces, shimmer and stagger, plus CSS snippets for spin, bounce and shimmer effects. The output is conceptual and code-level direction for building or refining these indicators.
When to use it
Use it when creating or improving loading indicators, spinners, progress bars or skeleton screens. It fits situations where wait states need to communicate system status and feel more engaging or on-brand.
Requirements
No scripts or tools are required; it is instructions only. Applying the CSS examples assumes a project with CSS or SVG animation support.

Loader & Spinner Animation Principles

Apply Disney's 12 principles to loading indicators for engaging, informative wait experiences.

Principles Applied to Loaders

1. Squash & Stretch

Bouncing dot loaders should squash on landing, stretch while rising. Creates life-like, playful motion.

2. Anticipation

Before progress completes, bar can briefly pause or slow. Spinners can decelerate before stopping. Signals completion coming.

3. Staging

Loader should be clearly visible but not block content unnecessarily. Skeleton screens stage where real content will appear.

4. Straight Ahead & Pose to Pose

Organic loaders (bouncing dots) benefit from straight-ahead. Progress bars use pose-to-pose (0% to 100% keyframes).

5. Follow Through & Overlapping Action

Multi-part loaders should have elements offset in timing. Dot 1 bounces, dot 2 follows 100ms later. Creates rhythm.

6. Ease In & Ease Out

Spinning: use ease-in-out per rotation cycle or linear for continuous. Bouncing: ease-in up, ease-out down.

7. Arcs

Orbital loaders should follow true circular arcs. Bouncing elements follow parabolic arcs like real physics.

8. Secondary Action

While spinner rotates (primary), glow pulses (secondary). Skeleton shimmer is secondary to skeleton shape.

9. Timing

  • Spinner full rotation: 800-1200ms
  • Bounce cycle: 500-800ms
  • Skeleton shimmer: 1500-2500ms
  • Progress bar smooth updates: 200ms
  • Dot stagger: 100-150ms
  • Pulse: 1000-2000ms

10. Exaggeration

Playful brands can use bouncy, elastic loaders. Professional contexts need subtle, smooth spinners. Match brand energy.

11. Solid Drawing

Maintain consistent stroke widths. Circular paths should be true circles. Progress bars should fill evenly.

12. Appeal

Engaging loaders reduce perceived wait time. Boring spinners feel slower. A delightful loader can turn frustration into momentary joy.

CSS Implementation

css
.spinner {  animation: spin 1000ms linear infinite;}
@keyframes spin {  to { transform: rotate(360deg); }}
.bounce-dot {  animation: bounce 600ms ease-in-out infinite alternate;}
.bounce-dot:nth-child(2) { animation-delay: 100ms; }.bounce-dot:nth-child(3) { animation-delay: 200ms; }
@keyframes bounce {  from { transform: translateY(0) scaleY(1); }  to { transform: translateY(-20px) scaleY(0.9); }}
.skeleton {  background: linear-gradient(90deg, #eee 25%, #f5f5f5 50%, #eee 75%);  background-size: 200% 100%;  animation: shimmer 2000ms infinite;}
@keyframes shimmer {  to { background-position: -200% 0; }}

Key Properties

  • transform: rotate, translateY, scale
  • animation: infinite loops
  • background-position: shimmer effects
  • stroke-dashoffset: SVG spinners
  • opacity: pulsing effects

Source and attribution

Source:dylantarre/animation-principlesinskills/07-by-ui-element/loaders-spinnersat commit8359713

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal