state-changes

安装量: 40
排名: #17945

安装

npx skills add https://github.com/dylantarre/animation-principles --skill state-changes

State Change Animations

Apply Disney's 12 principles when elements transform without leaving.

Principle Application

Squash & Stretch: Elements compress before expanding. A toggle switch squashes 5% before sliding.

Anticipation: Wind up before the change. Slight reverse movement (2-3px) before expanding.

Staging: Keep transformations centered on user focus. Don't let state changes distract from the interaction point.

Straight Ahead vs Pose-to-Pose: Define exact states. Button has rest, hover, active, disabled - each precisely designed.

Follow Through & Overlapping: Parts transform at different rates. Icon rotates before label fades in.

Slow In/Slow Out: Use ease-in-out for bidirectional changes: cubic-bezier(0.4, 0, 0.2, 1).

Arcs: Rotating elements follow natural arcs. Chevrons rotate on their center point, not linearly.

Secondary Action: Pair the primary change with supporting motion. Toggle sliding + color shift + icon swap.

Timing:

Micro-states: 100-150ms (checkbox tick, radio fill) Standard states: 150-250ms (toggles, accordions) Complex states: 250-400ms (multi-part transformations)

Exaggeration: Overshoot slightly on state changes. Toggle goes 2px past, then settles.

Solid Drawing: Maintain element integrity during transformation. No distortion that breaks visual consistency.

Appeal: State changes should feel satisfying. Users clicked with intent - reward that intent.

Timing Recommendations State Change Duration Easing Notes Checkbox 150ms ease-out Tick draws in Toggle Switch 200ms ease-in-out Overshoot slightly Radio Button 150ms ease-out Scale in from center Accordion 250ms ease-in-out Height + rotation Tab Switch 200ms ease-in-out Indicator slides Button Active 100ms ease-out Scale to 0.97 Card Expand 300ms ease-in-out All properties together Implementation Pattern .toggle { transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1); }

.toggle-knob { transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1); / Overshoot / }

.toggle.active .toggle-knob { transform: translateX(20px); }

Accordion Pattern .accordion-content { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 250ms ease-in-out; }

.accordion.open .accordion-content { grid-template-rows: 1fr; }

Key Rule

State changes are reversible. The animation to state B should be the inverse of animation to state A. Test both directions.

返回排行榜