CSS animation-delay Property

Beginner
⏱️ 6 min read
📚 Updated: Jun 2026
🎯 4 Examples
Animations & Timing

What You’ll Learn

The animation-delay property controls when a CSS animation begins. Use it to pause before motion starts, stagger items in a list, or sync multiple animations on a page.

01

Timing Control

Wait before animation starts.

02

Syntax

Use s or ms time values.

03

Default 0s

Animations start immediately.

04

Staggered UI

Delay each item in a sequence.

05

Negative Delay

Start mid-animation.

06

Shorthand

Works with animation too.

Definition and Usage

The animation-delay CSS property specifies how long the browser should wait before starting an animation on an element. The element keeps its starting styles during the delay period.

This is useful for entrance effects, loading sequences, hero sections where text appears after a logo, or list items that animate one after another.

💡
Beginner Tip

Think of animation-delay as a countdown timer. The animation is ready, but it waits until the delay time passes before the first keyframe runs.

📝 Syntax

Set animation-delay with a CSS time value:

syntax.css
selector {
  animation-delay: time;
}

Basic Example

animation-delay.css
.animated-box {
  animation: slideIn 1s ease-in-out;
  animation-delay: 2s;
}

Syntax Rules

  • The value must be a valid CSS time: seconds (s) or milliseconds (ms).
  • The initial value is 0s, meaning no wait before the animation starts.
  • Negative values are allowed and make the animation begin partway through its keyframes.
  • When an element has multiple animations, use comma-separated delays matching each animation.
  • You can also set delay as the fourth value in the animation shorthand.

⚡ Quick Reference

QuestionAnswer
Initial value0s
Applies toElements with CSS animations
InheritedNo
AnimatableNo
Common useStaggered entrances and timed sequences

Default Value

The initial value of animation-delay is 0s. With no delay set, the animation begins as soon as it is applied and the element is ready to animate.

💎 Property Values

These are the values you will use most often when controlling animation start times.

ValueExampleMeaning
Time in secondsanimation-delay: 1s;Waits 1 second before starting
Time in millisecondsanimation-delay: 500ms;Waits 500 milliseconds before starting
Negative timeanimation-delay: -0.5s;Starts the animation 0.5 seconds into its timeline
initialanimation-delay: initial;Resets to the default value 0s
inheritanimation-delay: inherit;Inherits the delay from the parent element
0s

No delay. The box begins moving immediately when the animation cycle runs.

Starts now

Default behavior for most animations.

1s

The box waits one second before each animation cycle begins moving.

Waits 1 second

Useful for short pauses before motion.

2s

The box waits two seconds, creating a clearly visible pause before movement.

Waits 2 seconds

Good for hero sections and timed reveals.

animation-delay vs the animation Shorthand

ApproachExampleWhen to use
Longhandanimation-delay: 2s;When animation settings are split across multiple properties
Shorthandanimation: slideIn 1s ease 2s;When you want name, duration, timing, and delay in one line

In the shorthand example above, 2s at the end is the delay. Duration comes first, then timing function, then delay.

👀 Live Preview

This box waits 2 seconds before sliding in from the left:

Reload the page to see the delay again. The box stays in place for 2s, then animates for 1s.

Examples Gallery

Try animation-delay with a basic pause, staggered list items, negative delay, and shorthand syntax.

📚 Basic Timing

Start with a simple delay before one animated element moves.

Example 1 — Delay the Start by 2 Seconds

Apply a slide-in animation, but wait 2 seconds before it begins.

animation-delay-basic.html
<style>
  @keyframes slideIn {
    from { transform: translateX(-100%); }
    to { transform: translateX(0); }
  }

  .animated-box {
    width: 100px;
    height: 100px;
    background: coral;
    animation: slideIn 1s ease-in-out;
    animation-delay: 2s;
  }
</style>

<div class="animated-box"></div>
Try It Yourself

How It Works

The element waits 2 seconds in its starting position, then runs the slideIn animation over 1 second.

Example 2 — Stagger Animations in a List

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

animation-delay-stagger.css
.menu li {
  animation: fadeUp 0.5s ease forwards;
  opacity: 0;
}
.menu li:nth-child(1) { animation-delay: 0.1s; }
.menu li:nth-child(2) { animation-delay: 0.3s; }
.menu li:nth-child(3) { animation-delay: 0.5s; }
Try It Yourself

How It Works

Each item uses the same animation but a different delay, creating a smooth staggered entrance effect.

⚡ Advanced Timing

Explore negative delays and shorthand syntax for more flexible animation control.

Example 3 — Negative Delay

Start an animation partway through its timeline using a negative delay value.

animation-delay-negative.css
.spinner {
  animation: spin 2s linear infinite;
  animation-delay: -1s;
}
Try It Yourself

How It Works

A delay of -1s on a 2-second animation skips the first half, so the motion looks like it already started.

Example 4 — Delay in the Animation Shorthand

Set the delay as the fourth value in the animation shorthand property.

animation-shorthand-delay.css
.badge {
  animation: popIn 0.6s ease-out 0.4s both;
}
Try It Yourself

How It Works

The order is name, duration, timing function, delay, then fill mode. Here, 0.4s is the delay before popIn runs.

🧠 How animation-delay Works

1

You define an animation

Create @keyframes and apply them with animation or animation-name.

Setup
2

You set a delay time

Add animation-delay: 2s; or include delay in the shorthand.

Wait period
3

The browser holds the start state

During the delay, the element stays at the animation’s starting styles.

Paused start
=

Timed motion

The animation begins exactly when the delay ends, giving you precise control over sequence and rhythm.

Universal Browser Support

animation-delay is supported in all modern browsers alongside CSS animations.

Baseline · CSS Animations

Delay animations reliably in modern browsers

Chrome, Firefox, Safari, Edge, and Opera all support animation-delay with standard time values.

98% Modern browser support
Google Chrome43+ · Desktop & Mobile
Full support
Mozilla Firefox16+ · Desktop & Mobile
Full support
Apple Safari9+ · macOS & iOS
Full support
Microsoft Edge12+ · Modern versions
Full support
Opera30+ · Modern versions
Full support

Legacy browsers

Very old browsers without CSS animation support also lack animation-delay.

💻
Internet Explorer IE 9 and earlier · No CSS animation support
None
animation-delay property 98% supported

Bottom line: Use animation-delay freely in modern projects. Test motion on mobile devices for performance and readability.

Conclusion

The animation-delay property gives you precise control over when CSS animations begin. It is essential for staggered entrances, timed hero sections, and synchronized motion across a page.

Start with simple values like 1s or 500ms, then experiment with staggered lists and negative delays once you understand the timing flow.

💡 Best Practices

✅ Do

  • Use short delays for staggered list and menu animations
  • Pair delay with animation-fill-mode: both or forwards when needed
  • Test animations on slower devices and mobile screens
  • Respect prefers-reduced-motion for accessibility
  • Keep delay times readable — usually under 2 seconds for UI

❌ Don’t

  • Delay critical content so long that users think the page is broken
  • Forget that negative delays skip the start of keyframes
  • Use very long delays on every element in a layout
  • Rely on animation alone for essential information
  • Skip testing when multiple animations run at once

Key Takeaways

Knowledge Unlocked

Five things to remember about animation-delay

Use these points when timing your next animation.

5
Core concepts
🕑02

Default 0s

Starts immediately.

Default
📝03

s and ms

1s or 500ms both work.

Values
📈04

Stagger Items

Different delays per element.

Pattern
05

Negative OK

Start mid-animation.

Advanced

❓ Frequently Asked Questions

The animation-delay property sets how long the browser waits before starting a CSS animation on an element.
The initial value is 0s, which means the animation starts immediately when triggered.
Yes. You can use seconds (s) or milliseconds (ms), such as 1s or 500ms.
Yes. A negative delay makes the animation begin partway through its keyframes, as if it had already been running.
Yes. Delay is the optional fourth value in the animation shorthand, for example animation: slideIn 1s ease 2s;

Practice in the Live Editor

Open the HTML editor, add animation-delay, and watch when your animation starts.

HTML Editor →

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.

5 people found this page helpful