Lab 08: Animation Architecture

Time: 60 minutes | Level: Architect | Docker: node:20-alpine

Overview

Enterprise animation system: CSS custom property animation tokens, scroll-driven animations with animation-timeline, View Transitions API, prefers-reduced-motion patterns, and the FLIP (First, Last, Invert, Play) animation technique.


Step 1: Animation Token System

/* tokens/animation.css */
:root {
  /* Duration tokens */
  --duration-instant:  0ms;
  --duration-fast:     100ms;
  --duration-normal:   200ms;
  --duration-slow:     400ms;
  --duration-slower:   700ms;
  --duration-slowest:  1000ms;

  /* Easing tokens (Material Design 3) */
  --easing-standard:    cubic-bezier(0.2, 0, 0, 1);
  --easing-decelerate:  cubic-bezier(0, 0, 0.2, 1);    /* Enter */
  --easing-accelerate:  cubic-bezier(0.4, 0, 1, 1);    /* Exit */
  --easing-sharp:       cubic-bezier(0.4, 0, 0.6, 1);  /* Attention */
  --easing-spring:      cubic-bezier(0.175, 0.885, 0.32, 1.275);

  /* Composite tokens */
  --transition-fade:    opacity var(--duration-normal) var(--easing-standard);
  --transition-slide:   transform var(--duration-normal) var(--easing-decelerate);
  --transition-scale:   transform var(--duration-fast) var(--easing-spring);
  --transition-color:   color var(--duration-fast) var(--easing-standard),
                        background-color var(--duration-fast) var(--easing-standard);
}

/* Respect user preferences */
@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-fast:    0ms;
    --duration-normal:  0ms;
    --duration-slow:    0ms;
    --duration-slower:  0ms;
    --duration-slowest: 0ms;
    /* Easing irrelevant when duration is 0 */
  }
}

💡 Setting duration tokens to 0ms under prefers-reduced-motion means every component using tokens automatically respects the preference — no individual component changes needed.


Step 2: Scroll-Driven Animations


Step 3: View Transitions API


Step 4: FLIP Animation Technique


Step 5: Reduced Motion Safe Patterns


Step 6: Stagger and Orchestration


Step 7: CSS Registered Custom Properties for Animation


Step 8: Capstone — Animation Token Generator

📸 Verified Output:


Summary

Technique
API
Use Case

Token system

CSS custom properties

Consistent timing

Reduced motion

Duration = 0ms

Accessibility compliance

Scroll-driven

animation-timeline: scroll()

No JS scroll listeners

View transitions

startViewTransition()

Page-level animations

Named transitions

view-transition-name

Shared element animation

FLIP

getBoundingClientRect delta

Layout-change animations

Stagger

--i * 50ms delay

List entrance effects

Registered props

@property

Transition custom values

Last updated