Responsive Adaptive

dylantarre/animation-principles/skills/10-by-time-scale/responsive-adaptive

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

Use when building context-dependent animations - duration that changes based on device, distance, user preference, or interaction context

AI-generated overview

Guides adaptive animation timing that adjusts duration to device, distance, user preference and interaction context.

What it does
This skill provides guidance for building context-dependent animation timing, covering Disney animation principles applied adaptively and strategies for distance-based, device-based and preference-based durations. It supplies CSS and JavaScript patterns, a context rules table and a token-based implementation pattern with media queries. The deliverable is instructional guidance rather than generated files or code artifacts.
When to use it
Use it when defining animation or transition durations that must vary by device capability, travel distance, reduced-motion preference or interaction type. It suits front-end work where a single fixed duration feels wrong across contexts.
Requirements
None beyond the agent; it is instructions only and ships no scripts.

Responsive & Adaptive Timing

Responsive timing adapts duration to context: device capability, travel distance, user preferences, and interaction type. One duration doesn't fit all situations.

Disney Principles for Adaptive Motion

Context-Aware Application

Squash & Stretch: Scale with device - more subtle on mobile (less screen real estate for deformation).

Anticipation: Shorter on touch devices - touch users expect faster response than mouse users.

Staging: Adapt to viewport - smaller screens need more focused staging, less simultaneous motion.

Straight Ahead/Pose to Pose: Same approach, scaled duration - poses stay, timing adjusts.

Follow Through: Proportional to distance - longer travel = more follow-through time.

Slow In/Slow Out: Adjust curve intensity - faster animations need sharper easing.

Arcs: Same paths, different speeds - arc shape remains, traversal time changes.

Secondary Action: Reduce on mobile - fewer simultaneous animations for performance.

Timing: THE adaptive variable - timing changes, principles stay.

Exaggeration: Less on smaller screens - proportional to viewport/element size.

Solid Drawing: Performance-aware - reduce 3D transforms on weaker devices.

Appeal: Context-appropriate - what feels right on desktop may feel slow on mobile.

Adaptive Strategies

Distance-Based Duration

css
/* Base duration for reference distance */--base-duration: 300ms;--base-distance: 100px;
/* Duration scales with distance *//* 50px travel = 200ms, 200px travel = 450ms */
javascript
function getDuration(distance) {  const baseDuration = 300;  const baseDistance = 100;  return Math.min(600, baseDuration * Math.sqrt(distance / baseDistance));}

Device-Based Duration

css
/* Desktop - full duration */.transition { transition-duration: 400ms; }
/* Tablet - slightly faster */@media (max-width: 1024px) {  .transition { transition-duration: 350ms; }}
/* Mobile - faster for perceived responsiveness */@media (max-width: 768px) {  .transition { transition-duration: 250ms; }}

Preference-Based Duration

css
/* Respect reduced motion preference */@media (prefers-reduced-motion: reduce) {  .transition {    transition-duration: 0.01ms !important;    animation-duration: 0.01ms !important;  }}
/* Reduce motion, don't eliminate */@media (prefers-reduced-motion: reduce) {  .transition {    transition-duration: 100ms;    transform: none; /* Only opacity fades */  }}

Context Rules

ContextDuration Adjustment
Touch device-25% from desktop
Small viewport-20% from desktop
Large travel distance+50% base
Small travel distance-30% base
User prefers reducedInstant or minimal
Low power mode-50% or disabled
High-frequency actionUse minimum duration
First-time viewFull duration
Repeat interactionReduced duration

Implementation Pattern

css
:root {  --duration-instant: 50ms;  --duration-fast: 150ms;  --duration-normal: 300ms;  --duration-slow: 500ms;}
@media (max-width: 768px) {  :root {    --duration-fast: 100ms;    --duration-normal: 200ms;    --duration-slow: 350ms;  }}
@media (prefers-reduced-motion: reduce) {  :root {    --duration-instant: 0ms;    --duration-fast: 0ms;    --duration-normal: 100ms;    --duration-slow: 150ms;  }}

Key Insight

Great animation adapts like typography adapts - what works at one size/context may not work at another. Build systems, not fixed values. Test across contexts. Duration is a variable, not a constant.

Source and attribution

Source:dylantarre/animation-principlesinskills/10-by-time-scale/responsive-adaptiveat commit8359713

License: No license

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

Report or request removal