CSS transition-delay Property

Beginner
5 min read
Updated: Oct 2026
3 examples
Live preview

Definition and Usage

The transition-delay property sets how long to wait after a property value changes before the transition effect starts.

The default is 0s (start immediately). Use positive times to pause first, or a negative time to jump partway into the effect. Pair it with transition-duration. It is not inherited.

Baseline · Widely available.

Not deprecated. Cross-browser since about September 2015.

Shorthand tip.

In transition, the second time value is the delay (the first is duration).

CSS Syntax

syntax.css
transition-delay: <time> | <time>, <time> | initial | inherit;

One or more times, comma-separated. Units: s or ms.

Property Values

ValueDescriptionTry it
0sStart immediately (default)Try it
0.5sWait half a second, then transitionTry it
1sWait one second before startingTry it
-0.5sStart now, already halfway into a 1s durationTry it
MultipleDifferent delays for different propertiesTry it
initialResets to 0sTry it

How to Use transition-delay

Delay only waits — you still need a duration (and a property that changes).

  1. Set transition-property and transition-duration.
  2. Add transition-delay on the base rule (same place as the other transition longhands).
  3. Change the property on hover, focus, or a class toggle.
  4. For staggered UI, give each item a slightly larger delay.

Live Preview

Duration stays at 0.8s. Change only the delay, then press Toggle to start the wait + fade.

Delay is the wait before the color change begins. Negative delay skips into the fade.

Box
Toggle me

transition-delay: 0.3s

CSS Examples

Each snippet uses a fixed duration so you can feel only the delay. Use Try It Yourself for a live editor.

Example 1 — Positive Delay

Wait 0.5s, then fade the background over 0.6s.

CSS
<style>
  .btn {
    background: #2563eb;
    color: #fff;
    transition-property: background-color;
    transition-duration: 0.6s;
    transition-delay: 0.5s;
  }
  .btn:hover,
  .btn:focus-visible {
    background: #dc2626;
  }
</style>

<button class="btn" type="button">Wait 0.5s</button>
Try It Yourself

How It Works

  1. Property + duration. Color will animate for 0.6s once it starts.
  2. Delay waits first. 0.5s holds the old color.
  3. Then it fades. After the wait, blue moves toward red.
  4. On leave too. The same delay applies when returning to blue.

Example 2 — Negative Delay

A negative delay starts immediately, already partway through the duration.

CSS
<style>
  .btn {
    background: #2563eb;
    color: #fff;
    transition-property: background-color;
    transition-duration: 1s;
    transition-delay: -0.5s;
  }
  .btn:hover,
  .btn:focus-visible {
    background: #16a34a;
  }
</style>

<button class="btn" type="button">Skip halfway</button>
Try It Yourself

How It Works

  1. Duration is 1s. A full fade would take one second.
  2. Delay is -0.5s. The browser pretends 0.5s already ran.
  3. Starts mid-fade. You see the second half of the color change.
  4. Feels faster. Useful when you want a snappier start without shortening duration.

Example 3 — Staggered Delays

Give each item a larger delay so they animate one after another.

CSS
<style>
  .dot {
    background: #2563eb;
    transition: background-color 0.4s ease;
  }
  .row:hover .a { transition-delay: 0s; background: #f59e0b; }
  .row:hover .b { transition-delay: 0.15s; background: #f59e0b; }
  .row:hover .c { transition-delay: 0.3s; background: #f59e0b; }
</style>

<div class="row">
  <span class="dot a"></span>
  <span class="dot b"></span>
  <span class="dot c"></span>
</div>
Try It Yourself

How It Works

  1. Same duration. Each dot fades in 0.4s.
  2. Different delays. 0s, 0.15s, then 0.3s.
  3. Hover/focus the row. Dots turn amber in sequence.
  4. Stagger pattern. Common for menus, cards, and checklist reveals.

Edge Cases & Pitfalls

Delay is easy to misread if duration is missing or the shorthand order is wrong.

duration

Delay is not duration

transition-delay only waits. Without a positive transition-duration, you still see an instant jump after the wait.

shorthand

Second time = delay

In transition: color 0.4s 0.2s, 0.4s is duration and 0.2s is delay.

lists

Multiple delays map to properties

Delays pair with the transition-property list. Extra values are truncated; fewer values repeat.

both-ways

Delay applies both directions

Unless you override it on the hover/focus rule, leaving the state also waits the same delay.

vs-animation

Not the same as animation-delay

animation-delay waits before keyframes. transition-delay waits before a property transition.

Browser Support

transition-delay is a browser CSS property for transition timing. Node.js, Deno, and Bun do not apply it.

✓ Baseline · Widely available

transition-delay

Chrome 26+, Firefox 16+, Safari 9+, Edge 12+, IE 10+. Widely available since September 2015.

98% Browser support
Google Chrome 26+
Full support
Mozilla Firefox 16+
Full support
Apple Safari 9+
Full support
Microsoft Edge 12+
Full support
Opera 12.1+
Full support
Samsung Internet 1.5+
Full support
Internet Explorer 10+
Full support
transition-delay Widely supported

Bottom line: Safe for modern UI timing. Keep delays short for interaction feedback. It is not a runtime API.

Key Takeaways

  • Role: wait before a transition starts after a value changes.
  • Default: 0s — no wait.
  • Negative: starts mid-transition as if time already passed.
  • Needs duration: delay alone does not create motion.

One line: use transition-delay to wait before a CSS transition begins.

Frequently Asked Questions

It sets how long to wait after a property changes before the transition effect starts.
The default is 0s, so the transition begins immediately.
Yes. Use s or ms, for example 0.5s or 500ms.
The transition starts immediately but as if it had already been running for that time, so you jump partway into the effect.
No. Set it on each element that needs a delayed transition.
It is Baseline and widely available since about September 2015. It is a browser CSS property, not a Node.js feature.

Next: transition-duration

Set how long a transition takes once it begins.

transition-duration tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

8 people found this page helpful