animation-duration
The animation-duration
CSS property sets the length of time that an animation takes to complete one cycle.
Try it
It is often convenient to use the shorthand property animation
to set all animation properties at once.
Syntax
/* Single animation */
animation-duration: auto; /* Default */
animation-duration: 6s;
animation-duration: 120ms;
/* Multiple animations */
animation-duration: 1.64s, 15.22s;
animation-duration: 10s, 35s, 230ms;
/* Global values */
animation-duration: inherit;
animation-duration: initial;
animation-duration: revert;
animation-duration: revert-layer;
animation-duration: unset;
Values
auto
-
For time-based animations,
auto
is equivalent to a value of0s
(see below). For CSS scroll-driven animations,auto
fills the entire timeline with the animation. <time>
-
The time that an animation takes to complete one cycle. This may be specified in either seconds (
s
) or milliseconds (ms
). The value must be positive or zero and the unit is required.If no value is provided, the default value of
0s
is used, in which case the animation still executes (theanimationStart
andanimationEnd
events are fired). Whether or not the animation will be visible when the duration is0s
will depend on the value ofanimation-fill-mode
, as explained below:- If
animation-fill-mode
is set tobackwards
orboth
, the first frame of the animation as defined byanimation-direction
will be displayed duringanimation-delay
countdown. - If
animation-fill-mode
is set toforwards
orboth
, the last frame of the animation will be displayed, as defined byanimation-direction
, after theanimation-delay
expires. - If
animation-fill-mode
is set tonone
, the animation will have no visible effect.
- If
Note: Negative values are invalid, causing the declaration to be ignored. Some early, prefixed, implementations may consider them as identical to 0s
.
Note: When you specify multiple comma-separated values on an animation-*
property, they are applied to the animations in the order in which the animation-name
s appear. For situations where the number of animations and animation-*
property values do not match, see Setting multiple animation property values.
Note: When creating CSS scroll-driven animations, specifying an animation-duration
value in seconds or milliseconds doesn't really make sense. In tests, it seemed to have no effect on scroll progress timeline animations, while on view progress timeline animations it seemed to push the animation to happen nearer the end of the timeline. However, Firefox requires an animation-duration
to be set for it to successfully apply the animation. You are therefore advised to set animation-duration
to 1ms
so that animations will work in Firefox, but the effect is not altered too much by it.
Formal definition
Initial value | 0s |
---|---|
Applies to | all elements, ::before and ::after pseudo-elements |
Inherited | no |
Computed value | as specified |
Animation type | Not animatable |
Formal syntax
animation-duration =
<time [0s,∞]>#
Examples
Setting animation duration
This animation has an animation-duration of 0.7 seconds.
HTML
<div class="box"></div>
CSS
.box {
background-color: rebeccapurple;
border-radius: 10px;
width: 100px;
height: 100px;
}
.box:hover {
animation-name: rotate;
animation-duration: 0.7s;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
Result
Hover over the rectangle to start the animation.
See CSS animations for more examples.
Specifications
Specification |
---|
CSS Animations Level 1 # animation-duration |
Browser compatibility
BCD tables only load in the browser
See also
- Using CSS animations
- JavaScript
AnimationEvent
API - Other related animation properties:
animation
,animation-composition
,animation-delay
,animation-direction
,animation-fill-mode
,animation-iteration-count
,animation-name
,animation-play-state
,animation-timeline
,animation-timing-function