Skip to main content
skill CX Codex

hover-interactions — Claude Code skill: pointer hover animations

A skill for mouse hover effects: button highlights, card lifts, link underlines, image zooms. Useful when an interface needs to respond to the pointer.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add dylantarre/animation-principles --skill hover-interactions -a claude-code
Open on GitHub

What hover-interactions does

The skill maps Disney's 12 animation principles onto hover states. Each principle ties to a concrete effect: a card scales slightly as it lifts, the shadow expands after the parent, an underline draws out from the center. Every effect type comes with a timing table and easing curves, from color change to image zoom.

Inside are ready CSS patterns: card lift with shadow, center-out underline, icon shift inside a button. The return is handled separately — hover-in stays quick, hover-out runs slower and softer. There's a rule about @media (hover: hover) so the effects don't fire on touch devices where no pointer exists.

The hard limit: hover-in must stay under 200ms or the response feels sluggish. The skill advises against moving elements far enough to cause mis-clicks, and caps combined properties at three.

What it helps with

  • build a card lift with shadow on hover
  • draw a link underline out from the center
  • shift an icon inside a button on hover
  • pick timings and easing for a hover effect
  • scope hover effects to pointer devices only

Example prompts for the agent

  • add a hover effect to the product card: lift and shadow
  • make nav links underline from the center
  • set up image zoom on hover with proper timings

How to install hover-interactions

1Skills CLI (Vercel)

npx skills add dylantarre/animation-principles --skill hover-interactions -a claude-code

2Manually: put the files in place

~/.claude/skills/hover-interactions/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/hover-interactions/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about hover-interactions

How do I install hover-interactions in Claude?

Run npx skills add dylantarre/animation-principles --skill hover-interactions -a claude-code. The skill file lands at ~/.claude/skills/hover-interactions/SKILL.md.

What does hover-interactions do?

It helps design pointer hover animations: button highlights, card lifts, link underlines, image zooms. You get timings, easing curves and ready CSS patterns.

Do I need to handle touch devices?

Yes. Touch devices have no hover, so the skill recommends wrapping effects in @media (hover: hover) and keeping functionality working without it.

Source text

SKILL.md · MIT
---
name: hover-interactions
description: Use when creating mouse hover effects - button highlights, card lifts, link underlines, image zooms, or any pointer-triggered animation.
---

# 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

```css
/* Card lift with shadow */
.card {
  transition: transform 200ms ease-out, box-shadow 200ms ease-out;
}

.card:hover {
  transform: translateY(-4px) scale(1.02);
  box-shadow: 0 12px 24px rgba(0,0,0,0.15);
}

/* Slower return */
.card:not(:hover) {
  transition: transform 250ms ease-in-out, box-shadow 250ms ease-in-out;
}

/* Underline draw from center */
.link {
  position: relative;
}

.link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 0;
  height: 2px;
  background: currentColor;
  transition: width 200ms ease-out, left 200ms ease-out;
}

.link:hover::after {
  width: 100%;
  left: 0;
}
```

## Icon Animation Pattern

```css
.button-icon {
  transition: transform 150ms ease-out;
}

.button:hover .button-icon {
  transform: translateX(4px);
}

/* Arrow grows */
.arrow-icon {
  transition: transform 150ms ease-out;
}

.link:hover .arrow-icon {
  transform: translateX(4px) scale(1.1);
}
```

## 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

```css
@media (hover: hover) {
  .card:hover { /* hover effects */ }
}
```

© dylantarre · MIT · dylantarre/animation-principles

Similar skills

Everything for Frontend and UI →

From the same set86

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor