hover-interactions
Use when creating mouse hover effects - button highlights, card lifts, link underlines, image zooms, or any pointer-triggered animation.
By dylantarre · 494 installs
npx skills add dylantarre/animation-principles --skill hover-interactions
Source repository · Upstream listing
Hover Interaction Animations
Apply Disney's 12 principles to mouse hover states.
Principle Application
Squash & Stretch : Cards can subtly scale (1.02 1.05) on hover, creating "lift" effect.
Anticipation : Hover IS anticipation for click. The hover state previews the interaction.
Staging : Hover effects should highlight the interactive element, not distract from it.
Straight Ahead vs Pose to Pose : Define rest and hover poses precisely. Transition smoothly between them.
Follow Through & Overlapping : Child elements animate after parent. Card lifts, then shadow expands.
Slow In/Slow Out : Hover in: ease out (fast response). Hover out: ease in out (graceful return).
Arcs : Underlines can draw from center outward. Highlights sweep in curved paths.
Secondary Action : Combine multiple subtle effects. Scale + shadow + color shift together.
Timing :
Hover response: 150 200ms (must feel responsive)
Hover exit: 200 300ms (can be slightly slower)
Never exceed 300ms for hover in
Exaggeration : Subtle hover is preview, not performance. Scale max 1.05, shadow max +8px.
Solid Drawing : Hover states must feel like the same element elevated, not a replacement.
Appeal : Hover should invite clicking. Create anticipation without demanding action.
Timing Recommendations
Hover Effect Hover In Hover Out Easing
Color Change 150ms 200ms ease out / ease in out
Scale/Lift 200ms 250ms ease out / ease in out
Shadow 200ms 250ms ease out / ease in out
Underline Draw 200ms 200ms ease out
Image Zoom 300ms 400ms ease out
Icon Shift 150ms 200ms ease out
Implementation Patterns
Icon Animation Pattern
Key Rules
1. Touch devices don't have hover ensure functionality without it
2. Hover in must be under 200ms to feel responsive
3. Don't move elements enough to cause mis clicks
4. Test with @media (hover: hover) to scope to pointer devices
5. Combine max 3 properties to avoid overwhelming