Skip to content

alckordev/tw-animations

Repository files navigation

tw-animations

NPM version NPM version NPM downloads License

Extended animation utilities for Tailwind CSS v4 and v3. 85+ animations, scroll timelines, and view animations with zero configuration.

Website β€’ Configurator β€’ GitHub

Tailwind Animate

✨ Features

  • 85+ Animations - Attention seekers, fades, slides, zooms, rotations, and more
  • Scroll Animations - View timelines and animation ranges based on scroll position (NEW in v2.0)
  • Zero Configuration - Just import and start animating
  • Dual Support - Works with both Tailwind CSS v4 and v3
  • Fully Customizable - Control duration, delay, timing, direction, and more
  • CSS Custom Properties - Easy theming and dynamic control
  • Arbitrary Values - Use any value with bracket notation
  • Modern & Lightweight - Built with CSS custom properties and @utility syntax

πŸ“¦ Packages

This monorepo contains two packages:

Package Version Description
tw-animations npm For Tailwind CSS v4 (CSS-only)
tw-animations-plugin npm For Tailwind CSS v3 (Plugin)

πŸš€ Installation

For Tailwind CSS v4

npm install tw-animations

Add the import to your CSS file:

@import "tailwindcss";
@import "tw-animations";

For Tailwind CSS v3

npm install tw-animations-plugin

Add the plugin to your Tailwind configuration:

// tailwind.config.js
module.exports = {
  plugins: [require("tw-animations-plugin")],
};

🎯 Quick Start

Basic Animation

<div class="animate-fade-in">Hello World!</div>

With Controls

<button class="animate-bounce animate-infinite animate-duration-[2s]">
  Click me
</button>

Scroll Animation (NEW in v2.0)

<div class="timeline-view animate-fade-in-up animate-range-entry">
  Appears when entering viewport
</div>

🎨 Available Animations

Attention Seekers (16)

animate-flash β€’ animate-head-shake β€’ animate-heart-beat β€’ animate-jelly β€’ animate-rubber-band β€’ animate-shake-x β€’ animate-shake-y β€’ animate-swing β€’ animate-tada β€’ animate-wiggle β€’ animate-wobble β€’ animate-float β€’ animate-spin β€’ animate-ping β€’ animate-pulse β€’ animate-bounce

New Animations (v2.0)

animate-blurred-fade-in β€’ animate-blink β€’ animate-dancing β€’ animate-jiggle β€’ animate-pop β€’ animate-rotate-360 β€’ animate-rotate-180 β€’ animate-rotate-90 β€’ animate-expand-horizontally β€’ animate-expand-vertically β€’ animate-bounce-fade-in β€’ animate-pulse-fade-in

Fading Entrances (5)

animate-fade-in β€’ animate-fade-in-down β€’ animate-fade-in-start β€’ animate-fade-in-end β€’ animate-fade-in-up

Fading Exits (5)

animate-fade-out β€’ animate-fade-out-down β€’ animate-fade-out-start β€’ animate-fade-out-end β€’ animate-fade-out-up

Sliding Entrances/Exits (8)

animate-slide-in-down β€’ animate-slide-in-start β€’ animate-slide-in-end β€’ animate-slide-in-up β€’ animate-slide-out-down β€’ animate-slide-out-start β€’ animate-slide-out-end β€’ animate-slide-out-up

Zooming Entrances/Exits (10)

animate-zoom-in β€’ animate-zoom-in-down β€’ animate-zoom-in-start β€’ animate-zoom-in-end β€’ animate-zoom-in-up β€’ animate-zoom-out β€’ animate-zoom-out-down β€’ animate-zoom-out-start β€’ animate-zoom-out-end β€’ animate-zoom-out-up

Bouncing Entrances/Exits (10)

animate-bounce-in β€’ animate-bounce-in-down β€’ animate-bounce-in-start β€’ animate-bounce-in-end β€’ animate-bounce-in-up β€’ animate-bounce-out β€’ animate-bounce-out-down β€’ animate-bounce-out-start β€’ animate-bounce-out-end β€’ animate-bounce-out-up

Rotating Entrances/Exits (10)

animate-rotate-in β€’ animate-rotate-in-down-start β€’ animate-rotate-in-down-end β€’ animate-rotate-in-up-start β€’ animate-rotate-in-up-end β€’ animate-rotate-out β€’ animate-rotate-out-down-start β€’ animate-rotate-out-down-end β€’ animate-rotate-out-up-start β€’ animate-rotate-out-up-end

Back Entrances/Exits (8)

animate-back-in-down β€’ animate-back-in-start β€’ animate-back-in-end β€’ animate-back-in-up β€’ animate-back-out-down β€’ animate-back-out-start β€’ animate-back-out-end β€’ animate-back-out-up

Flippers (5)

animate-flip β€’ animate-flip-in-x β€’ animate-flip-in-y β€’ animate-flip-out-x β€’ animate-flip-out-y

Specials (6)

animate-hinge β€’ animate-jack-in β€’ animate-jack-out β€’ animate-roll-in β€’ animate-roll-out β€’ animate-particle

Dashing (4)

animate-dash-in-start β€’ animate-dash-in-end β€’ animate-dash-out-start β€’ animate-dash-out-end

πŸ“œ Scroll Animations (NEW in v2.0)

Animate elements based on their scroll position in the viewport.

View Timelines

<!-- Animate when element enters viewport -->
<div class="timeline-view animate-fade-in">...</div>

<!-- Animate on horizontal scroll -->
<div class="timeline-view-x animate-slide-in-start">...</div>

<!-- Animate on vertical scroll -->
<div class="timeline-view-y animate-fade-in-up">...</div>

Animation Ranges

Control when animations play during scroll:

<!-- Play when entering viewport -->
<div class="timeline-view animate-zoom-in animate-range-entry">...</div>

<!-- Play when leaving viewport -->
<div class="timeline-view animate-fade-out animate-range-exit">...</div>

<!-- Play while in viewport -->
<div class="timeline-view animate-rotate-360 animate-range-cover">...</div>

<!-- Preset ranges -->
<div class="timeline-view animate-fade-in animate-range-gradual">...</div>
<!-- gradual (10%-90%) | moderate (20%-80%) | brisk (30%-70%) | rapid (40%-60%) -->

Arbitrary Range Values

<div class="timeline-view animate-fade-in animate-range-[entry_10%_cover_50%]">
  Custom range
</div>

Browser Support for Scroll Animations

Scroll animations require:

  • Chrome/Edge: 115+
  • Safari: 17.4+
  • Firefox: Coming soon (currently in development)

πŸŽ›οΈ Control Utilities

Duration

<div class="animate-fade-in animate-duration-500">Fast fade</div>
<div class="animate-bounce animate-duration-[2s]">Slow bounce</div>

Delay

<div class="animate-fade-in animate-delay-[1s]">Delayed entrance</div>

Iteration Count

<div class="animate-pulse animate-infinite">Never stops</div>
<div class="animate-bounce animate-twice">Bounce twice</div>
<div class="animate-shake-x animate-iteration-5">Shake 5 times</div>

Direction

<div class="animate-spin animate-reverse">Reverse spin</div>
<div class="animate-wiggle animate-alternate animate-infinite">
  Back and forth
</div>

Fill Mode

<div class="animate-fade-in animate-fill-both">Maintains final state</div>

Timing Functions

<div class="animate-bounce animate-ease-in-out">Smooth bounce</div>
<div class="animate-fade-in animate-ease-linear">Linear fade</div>

Play State

<div class="animate-spin animate-pause hover:animate-play">Spin on hover</div>

🎨 CSS Custom Properties

Customize animations globally:

:root {
  --default-animation-duration: 0.5s;
  --default-animation-delay: 0s;
  --default-animation-timing-function: ease-in-out;
}

/* Theme-specific customization */
.dark {
  --default-animation-duration: 0.8s;
}

πŸ’‘ Advanced Usage

Hover Animations

<button class="hover:animate-wiggle hover:animate-infinite">
  Hover to wiggle
</button>

Responsive Animations

<div class="animate-bounce md:animate-fade-in lg:animate-none">
  Responsive animation
</div>

Combining Utilities

<div
  class="animate-fade-in animate-duration-[2s] animate-delay-500 animate-ease-in-out"
>
  Smooth, delayed fade in
</div>

πŸ“š Documentation

πŸ”„ Migration from @iscodex/tailwindcss-animate

The package was renamed to tw-animations (v4) and tw-animations-plugin (v3). The old scoped package @iscodex/tailwindcss-animate remains on npm but is deprecated.

To migrate:

  • Tailwind v4: Replace @iscodex/tailwindcss-animate with tw-animations in your package.json, then update your CSS import to @import "tw-animations";.
  • Tailwind v3: Replace with tw-animations-plugin and use require("tw-animations-plugin") in your config.

Class names and behavior are the same; only the package name and import path change.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ™ Credits

Created with ❀️ by alckordev

πŸ“ Changelog

See CHANGELOG for version history and changes.


⭐ If you find this useful, please consider giving it a star on GitHub!

About

Extended animation utilities for Tailwind CSS

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published