home / skills / dylantarre / animation-principles / medium-300-500ms

This skill helps you design and implement medium-duration animations (300-500ms) that communicate clearly and feel polished across interfaces.

npx playbooks add skill dylantarre/animation-principles --skill medium-300-500ms

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.8 KB
---
name: medium-300-500ms
description: Use when building standard animations between 300-500ms - page transitions, significant UI changes, animated illustrations that need clear communication
---

# Medium Animations (300-500ms)

The 300-500ms range is **standard animation territory**. Long enough to be watched, short enough to not impede flow. The workhorse duration for meaningful motion.

## Disney Principles at Medium Duration

### All 12 Principles Applicable

**Squash & Stretch**: Full expression - visible deformation for bouncing, elastic elements. 15-25% stretch feels natural.

**Anticipation**: Clear preparation - 80-120ms anticipation before main action. Pull back before push forward.

**Staging**: Multi-element choreography possible - primary action leads, supporting elements follow.

**Straight Ahead/Pose to Pose**: Pose to pose recommended - define key positions, let easing handle in-betweens.

**Follow Through**: Essential - overlapping action where parts settle at different rates.

**Slow In/Slow Out**: Critical for naturalism - both directions need proper easing.

**Arcs**: Natural motion paths - elements should travel on curves matching real physics.

**Secondary Action**: Multiple secondary actions - hair follows head, shadow follows object.

**Timing**: 18-30 frames at 60fps. Enough frames for nuanced motion.

**Exaggeration**: Full range available - match to brand personality and context.

**Solid Drawing**: Complex transforms work - 3D rotations, perspective shifts.

**Appeal**: Character-defining animations - this is where brand personality lives.

## Easing Recommendations

```css
/* Smooth, natural motion */
transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);

/* Expressive entrance */
transition: all 450ms cubic-bezier(0.16, 1, 0.3, 1);

/* Bouncy, playful */
transition: transform 400ms cubic-bezier(0.34, 1.56, 0.64, 1);

/* Dramatic deceleration */
transition: all 350ms cubic-bezier(0, 0.55, 0.45, 1);
```

## Best Use Cases

- Page/view transitions
- Complex modal sequences
- Animated illustrations
- Data visualization changes
- Onboarding animations
- Feature reveals
- State machine transitions
- Loading completion celebrations

## Implementation Pattern

```css
.page-enter {
  opacity: 0;
  transform: translateX(30px);
}

.page-enter-active {
  opacity: 1;
  transform: translateX(0);
  transition: opacity 350ms ease-out,
              transform 400ms cubic-bezier(0.16, 1, 0.3, 1);
}

/* Staggered children */
.list-item {
  transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);
}
.list-item:nth-child(1) { transition-delay: 0ms; }
.list-item:nth-child(2) { transition-delay: 50ms; }
.list-item:nth-child(3) { transition-delay: 100ms; }
```

## Key Insight

Medium duration is where animation becomes **storytelling**. Users watch, understand, and remember these animations. Invest in polish here - it defines perceived quality.

Overview

This skill captures medium-duration animations (300–500ms) for UI and illustrations, balancing clarity and pace. It applies Disney’s 12 animation principles to create polished, meaningful motion for page transitions, modals, and feature reveals. Use these timings and easings when you want users to watch and remember the animation without losing flow.

How this skill works

The skill recommends durations between 300 and 500 milliseconds and pairs them with tailored easing curves for different expressive goals: smooth, expressive, bouncy, or dramatic. It prescribes key principles to apply—anticipation, slow in/slow out, follow through, arcs, and more—plus implementation patterns like pose-to-pose keyframes, staggered children, and combined opacity/transform transitions. Code-ready easing examples and CSS patterns are provided to speed adoption.

When to use it

  • Page or view transitions where context change should be clear and memorable
  • Complex modals or multi-step UI sequences that need staged choreography
  • Animated illustrations and feature reveals that convey brand personality
  • Data visualization updates and state machine transitions that require legibility
  • Onboarding flows and loading completion celebrations that should feel rewarding

Best practices

  • Use pose-to-pose planning: define strong keys, let easing handle in-betweens
  • Apply anticipation of ~80–120ms before major motion for readable intent
  • Keep slow in / slow out and follow through to avoid mechanical motion
  • Use staggered children with small delays (30–100ms) for hierarchical clarity
  • Pick easing to match intent: smooth (0.4,0,0.2,1), expressive (0.16,1,0.3,1), or bouncy for playful moments

Example use cases

  • Sliding page transitions with fade and arc-based movement for context retention
  • Modal entrance with anticipation, slight squash/stretch, and settling follow-through
  • Staggered list reveals during onboarding to guide attention through steps
  • Animated data updates where elements ease into new positions over ~400ms
  • Feature reveal micro-animations that emphasize brand appeal without blocking interaction

FAQ

Why choose 300–500ms vs shorter or longer durations?

This range is long enough for users to perceive intent and storytelling but short enough to keep interaction fluid; shorter feels snappy but can be unclear, longer can feel sluggish.

How do I pick an easing curve for my animation?

Match easing to intent: natural UI movement uses smooth cubic-bezier(0.4,0,0.2,1); dramatic entrances use stronger deceleration; playful elements benefit from bouncy curves with overshoot.