Skip to content

Tailwind CSS - Transition Delay

The transition-delay utility in Tailwind CSS allows you to specify a delay before a CSS transition effect begins. This is crucial for creating sophisticated, multi-stage animations and providing a more polished user experience by carefully timing how and when elements change.

Tailwind provides a set of delay-{amount} classes to apply different delay durations. These utilities work in conjunction with transition and transform utilities to create smooth animations.

ClassCSS Properties
delay-0transition-delay: 0s;
delay-75transition-delay: 75ms;
delay-100transition-delay: 100ms;
delay-150transition-delay: 150ms;
delay-200transition-delay: 200ms;
delay-300transition-delay: 300ms;
delay-500transition-delay: 500ms;
delay-700transition-delay: 700ms;
delay-1000transition-delay: 1000ms;

The primary function of delay-* is to control the start time of a transition. When an element’s state changes (e.g., on hover or focus), the browser waits for the specified delay period before applying the new styles defined in the transition.

  • delay-{amount}: Applies a transition-delay of a specific duration. The number corresponds to milliseconds (e.g., delay-300 is 300ms).
  • Composability: Combine delay-* with transition, duration-*, and ease-* classes to gain full control over your animations.

Practical Application: Staggered Animation Effect

Section titled “Practical Application: Staggered Animation Effect”

A common use case for transition delay is creating a staggered or sequenced animation, where multiple elements animate one after another. This adds a dynamic and professional feel to UI components like navigation menus or pricing cards.

In this example, hovering over each button triggers a scaling and color-change effect. Each button has a different delay, creating a pleasant, cascading visual effect. Notice how we also define the transition properties (transition-all, duration-300, ease-in-out) to ensure the animation is smooth.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tailwind CSS Transition Delay</title>
<!-- For modern development, it's recommended to set up Tailwind CSS with a build tool like Vite or Next.js -->
<!-- This Play CDN is for demonstration purposes only. -->
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-slate-100 dark:bg-slate-900 flex items-center justify-center min-h-screen">
<div class="p-8 rounded-lg bg-white dark:bg-slate-800 shadow-lg">
<h2 class="text-2xl font-bold text-slate-900 dark:text-white mb-6 text-center">Staggered Transition Delays</h2>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
<!-- Button 1: 150ms delay -->
<button class="px-6 py-3 font-semibold text-white bg-blue-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-blue-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75"
style="transition-delay: 150ms;">
Delay 150ms
</button>
<!-- Button 2: 300ms delay -->
<button class="px-6 py-3 font-semibold text-white bg-green-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-green-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-green-400 focus:ring-opacity-75"
style="transition-delay: 300ms;">
Delay 300ms
</button>
<!-- Button 3: 500ms delay -->
<button class="px-6 py-3 font-semibold text-white bg-purple-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-purple-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-purple-400 focus:ring-opacity-75"
style="transition-delay: 500ms;">
Delay 500ms
</button>
<!-- Button 4: 700ms delay -->
<button class="px-6 py-3 font-semibold text-white bg-red-500 rounded-lg shadow-md transition-all duration-300 ease-in-out
hover:bg-red-600 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-red-400 focus:ring-opacity-75"
style="transition-delay: 700ms;">
Delay 700ms
</button>
</div>
</div>
</body>
</html>
  • Browser DevTools are Your Friend: Use the ‘Animations’ tab in your browser’s developer tools to inspect and debug your transitions. You can visualize the delay, duration, and easing curve, which is incredibly helpful for fine-tuning effects.
  • Avoid Overuse: While delays can create beautiful effects, excessive or long delays can make your UI feel sluggish and unresponsive. Use them thoughtfully to enhance, not hinder, the user experience.
  • Accessibility: Ensure that animations do not remove or obscure critical information. Users can enable a prefers-reduced-motion setting in their OS, which you can respect using Tailwind’s motion-reduce variant to disable or simplify animations.