# Animation Library Reference This document contains detailed animation examples and complete implementation code for Tailwind CSS v4 animations. ## Complete Animation Examples ### Fade In ```css @theme { --animate-fade-in: fade-in 0.3s ease-out; @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } } ``` **Usage:** ```html
Fades in
``` ### Fade In Scale ```css @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); } } } ``` **Usage:** ```html
Fades and scales in
``` ### Slide In from Bottom ```css @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); } } } ``` **Usage:** ```html
Slides up while fading in
``` ### Spin ```css @theme { --animate-spin: spin 1s linear infinite; @keyframes spin { to { transform: rotate(360deg); } } } ``` **Usage:** ```html
...
``` ### Pulse ```css @theme { --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } } ``` **Usage:** ```html
Pulsing element
``` ### Bounce ```css @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); } } } ``` **Usage:** ```html
Bouncing element
``` ### Ping (Ripple Effect) ```css @theme { --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; @keyframes ping { 0% { transform: scale(1); opacity: 1; } 75%, 100% { transform: scale(2); opacity: 0; } } } ``` **Usage:** ```html
``` ## Complex Animation Patterns ### Shake Animation ```css @theme { --animate-shake: shake 0.5s ease-in-out; @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); } 20%, 40%, 60%, 80% { transform: translateX(10px); } } } ``` **Usage:** ```html
Shake on hover
``` ### Wiggle ```css @theme { --animate-wiggle: wiggle 1s ease-in-out infinite; @keyframes wiggle { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } } } ``` **Usage:** ```html
Wiggling element
``` ### Slide In from Directions ```css @theme { --animate-slide-in-left: slide-in-left 0.4s ease-out; --animate-slide-in-right: slide-in-right 0.4s ease-out; --animate-slide-in-top: slide-in-top 0.4s ease-out; --animate-slide-in-bottom: slide-in-bottom 0.4s ease-out; @keyframes slide-in-left { 0% { transform: translateX(-100%); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } @keyframes slide-in-right { 0% { transform: translateX(100%); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } @keyframes slide-in-top { 0% { transform: translateY(-100%); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } @keyframes slide-in-bottom { 0% { transform: translateY(100%); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } } ``` **Usage:** ```html
Slides from left
Slides from right
Slides from top
Slides from bottom
``` ### Loading Dots ```css @theme { --animate-dot-pulse: dot-pulse 1.4s infinite ease-in-out; @keyframes dot-pulse { 0%, 80%, 100% { opacity: 0; } 40% { opacity: 1; } } } ``` **Usage:** ```html
``` ## Complete Animation Library Full implementation of all animations: ```css @import 'tailwindcss'; @theme { --animate-spin: spin 1s linear infinite; --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; --animate-bounce: bounce 1s infinite; --animate-fade-in: fade-in 0.3s ease-out; --animate-fade-out: fade-out 0.3s ease-in; --animate-fade-in-scale: fade-in-scale 0.3s ease-out; --animate-slide-up: slide-up 0.4s ease-out; --animate-slide-down: slide-down 0.4s ease-out; --animate-slide-left: slide-left 0.4s ease-out; --animate-slide-right: slide-right 0.4s ease-out; --animate-shake: shake 0.5s ease-in-out; --animate-wiggle: wiggle 1s ease-in-out infinite; @keyframes spin { to { transform: rotate(360deg); } } @keyframes ping { 0% { transform: scale(1); opacity: 1; } 75%, 100% { transform: scale(2); opacity: 0; } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @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); } } @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes fade-out { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes fade-in-scale { 0% { opacity: 0; transform: scale(0.95); } 100% { opacity: 1; transform: scale(1); } } @keyframes slide-up { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes slide-down { 0% { opacity: 0; transform: translateY(-20px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes slide-left { 0% { opacity: 0; transform: translateX(20px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes slide-right { 0% { opacity: 0; transform: translateX(-20px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); } 20%, 40%, 60%, 80% { transform: translateX(10px); } } @keyframes wiggle { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } } } ``` ## Advanced Techniques ### Animation with Variants Animations work with all Tailwind variants: ```html
Spins on hover
Pulses on focus
Bounces when parent hovered
Animates on large screens
Pulses in dark mode
``` ### Combining Multiple Animations Use arbitrary properties for complex animations: ```html
Delayed fade in
``` ### Staggered Animations ```html
Item 1
Item 2
Item 3
Item 4
``` ### Pausing Animations ```html
Pauses on hover
``` ## Performance Considerations 1. **Use transform and opacity** - Hardware accelerated properties 2. **Avoid animating expensive properties** - Don't animate width, height, or layout properties 3. **Add will-change sparingly** - Only for known animations that need performance boost 4. **Test on low-end devices** - Ensure smooth performance across all devices 5. **Use CSS animations over JavaScript** - Better performance and smoother animations ## Accessibility Respect user motion preferences: ```css @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } ```