Claude-skill-registry handling-animations
Define animations with @keyframes within @theme directive, use animate-{name} utilities, and implement entry animations with starting: variant. Use when creating custom animations or entry effects.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/handling-animations" ~/.claude/skills/majiayu000-claude-skill-registry-handling-animations && rm -rf "$T"
manifest:
skills/data/handling-animations/SKILL.mdsource content
Handling Animations
Purpose
Define custom animations using
@keyframes within the @theme directive and use Tailwind's animation utilities with full variant support.
Basic Animation Pattern
Define animations within
@theme:
@import 'tailwindcss'; @theme { --animate-fade-in: fade-in 0.3s ease-out; @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } }
Usage:
<div class="animate-fade-in">Fades in on load</div>
Animation Variable Naming
Pattern:
--animate-{name}: {animation-shorthand};
The variable name determines the utility class:
@theme { --animate-spin: spin 1s linear infinite; --animate-bounce: bounce 1s infinite; --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
Generates utilities:
animate-spinanimate-bounceanimate-pulse
Common Animation Types
Fade Animations
Fade In:
@theme { --animate-fade-in: fade-in 0.3s ease-out; @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } }
Fade In with Scale:
@theme { --animate-fade-in-scale: fade-in-scale 0.3s ease-out; @keyframes fade-in-scale { 0% { opacity: 0; transform: scale(0.95); } 100% { opacity: 1; transform: scale(1); } } }
Slide Animations
Slide Up:
@theme { --animate-slide-up: slide-up 0.4s ease-out; @keyframes slide-up { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } }
For complete directional slide examples (left, right, top, bottom), see Animation Library.
Motion Animations
Spin:
@theme { --animate-spin: spin 1s linear infinite; @keyframes spin { to { transform: rotate(360deg); } } }
Bounce:
@theme { --animate-bounce: bounce 1s infinite; @keyframes bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); } 50% { transform: translateY(0); animation-timing-function: cubic-bezier(0, 0, 0.2, 1); } } }
For additional motion animations (pulse, ping, shake, wiggle), see Animation Library.
Entry Animations with starting:
The
starting: variant applies styles before animations begin:
<div class="opacity-100 transition-opacity duration-300 starting:opacity-0"> Fades in smoothly </div> <div class=" translate-y-0 opacity-100 transition-all duration-300 starting:translate-y-4 starting:opacity-0 "> Slides up while fading in </div>
How it works:
- Element starts with
stylesstarting: - Browser renders first frame
- Transition/animation begins to final state
Animation with Variants
Animations work with all Tailwind variants:
<div class="hover:animate-spin">Spins on hover</div> <div class="focus:animate-pulse">Pulses on focus</div> <div class="group-hover:animate-bounce">Bounces when parent hovered</div> <div class="lg:animate-fade-in">Animates on large screens</div> <div class="dark:animate-pulse">Pulses in dark mode</div>
Advanced Animation Techniques
Staggered Animations
<div class="space-y-4"> <div class="animate-slide-up [animation-delay:0s]">Item 1</div> <div class="animate-slide-up [animation-delay:0.1s]">Item 2</div> <div class="animate-slide-up [animation-delay:0.2s]">Item 3</div> <div class="animate-slide-up [animation-delay:0.3s]">Item 4</div> </div>
Animation Control
Delayed Animation:
<div class=" animate-fade-in [animation-delay:0.1s] [animation-fill-mode:both] "> Delayed fade in </div>
Pause on Hover:
<div class="animate-spin hover:[animation-play-state:paused]"> Pauses on hover </div>
Best Practices
- Define within @theme - Keep all animations in one place
- Use semantic names -
notfade-inanim-1 - Include timing in variable - Full animation shorthand
- Test performance - Avoid animating expensive properties (width, height)
- Use transform and opacity - Hardware accelerated
- Add will-change sparingly - Only for known animations
- Respect prefers-reduced-motion - Disable animations for accessibility
Accessibility
Respect user motion preferences:
@media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }
References
For comprehensive animation examples and patterns, see:
- Animation Library - Complete collection of animation examples
- Fade animations (in, out, scale)
- Slide animations (all directions)
- Motion animations (spin, pulse, ping, bounce)
- Complex patterns (shake, wiggle, loading dots)
- Complete animation library code
- Advanced techniques and performance considerations
See Also
- RESEARCH.md sections: "Entry Animations with starting:" and "Animation Keyframes"