Transitions & Animation

Transition Timing Function

Utilities for controlling the easing of CSS transitions.

Quick reference

Class
Properties
ease-lineartransition-timing-function: linear;
ease-intransition-timing-function: cubic-bezier(0.4, 0, 1, 1);
ease-outtransition-timing-function: cubic-bezier(0, 0, 0.2, 1);
ease-in-outtransition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);

Basic usage

Controlling the easing curve

Use the ease-{timing} utilities to control an element’s easing curve.

Transition Timing Function - 图1

Hover each button to see the expected behaviour

Transition Timing Function - 图2

  1. <button class="ease-in duration-300 ...">Button A</button>
  2. <button class="ease-out duration-300 ...">Button B</button>
  3. <button class="ease-in-out duration-300 ...">Button C</button>

Applying conditionally

Hover, focus, and other states

Tailwind lets you conditionally apply utility classes in different states using variant modifiers. For example, use hover:ease-in to only apply the ease-in utility on hover.

  1. <div class="transition duration-150 ease-out hover:ease-in">
  2. <!-- ... -->
  3. </div>

For a complete list of all available state modifiers, check out the Hover, Focus, & Other States documentation.

Breakpoints and media queries

You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:ease-in to apply the ease-in utility at only medium screen sizes and above.

  1. <div class="transition duration-150 ease-out md:ease-in">
  2. <!-- ... -->
  3. </div>

To learn more, check out the documentation on Responsive Design, Dark Mode and other media query modifiers.


Using custom values

Customizing your theme

By default, Tailwind provides four general purpose transition-timing-function utilities. You can customize these values by editing theme.transitionTimingFunction or theme.extend.transitionTimingFunction in your tailwind.config.js file.

tailwind.config.js

  1. module.exports = { theme: { extend: { transitionTimingFunction: { 'in-expo': 'cubic-bezier(0.95, 0.05, 0.795, 0.035)', 'out-expo': 'cubic-bezier(0.19, 1, 0.22, 1)', } } }}

Learn more about customizing the default theme in the theme customization documentation.

Arbitrary values

If you need to use a one-off transition-timing-function value that doesn’t make sense to include in your theme, use square brackets to generate a property on the fly using any arbitrary value.

  1. <div class="ease-[cubic-bezier(0.95,0.05,0.795,0.035)]">
  2. <!-- ... -->
  3. </div>

Learn more about arbitrary value support in the arbitrary values documentation.