The transition-duration
CSS property sets the length of time a transition animation should take to complete. By default, the value is 0s
, meaning that no animation will occur.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
You may specify multiple durations; each duration will be applied to the corresponding property as specified by the transition-property
property, which acts as a master list. If there are fewer durations specified than in the master list, the user agent repeat the list of durations. If there are more durations, the list is simply truncated to the right size. In both case the CSS declaration stays valid.
Syntax
/* <time> values */
transition-duration: 6s;
transition-duration: 120ms;
transition-duration: 1s, 15s;
transition-duration: 10s, 30s, 230ms;
/* Global values */
transition-duration: inherit;
transition-duration: initial;
transition-duration: unset;
Values
<time>
- Is a
<time>
denoting the amount of time the transition from the old value of a property to the new value should take. A time of 0s
indicates that no transition will happen, that is the switch between the two states will be instantaneous. A negative value for the time renders the declaration invalid.
<time>#
Examples
transition-duration: 0.5s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent { width: 250px; height:125px;}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top transform -webkit-transform color;
-webkit-transition-duration:0.5s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transform color;
transition-duration:0.5s;
transition-timing-function: ease-in-out;
}
.box1{
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top:25px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top transform -webkit-transform color;
-webkit-transition-duration:0.5s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transformv color;
transition-duration:0.5s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-duration: 1s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent { width: 250px; height:125px;}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top -webkit-transform color;
-webkit-transition-duration:1s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform color;
transition-duration:1s;
transition-timing-function: ease-in-out;
}
.box1{
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top:25px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top -webkit-transform transform color;
-webkit-transition-duration:1s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transform color;
transition-duration:1s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-duration: 2s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent { width: 250px; height:125px;}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top transform -webkit-transform color;
-webkit-transition-duration:2s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transform color;
transition-duration:2s;
transition-timing-function: ease-in-out;
}
.box1{
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top:25px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top transform -webkit-transform color;
-webkit-transition-duration:2s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transform color;
transition-duration:2s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
transition-duration: 4s
<div class="parent">
<div class="box">Lorem</div>
</div>
.parent { width: 250px; height:125px;}
.box {
width: 100px;
height: 100px;
background-color: red;
font-size: 20px;
left: 0px;
top: 0px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top transform -webkit-transform color;
-webkit-transition-duration:4s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transform color;
transition-duration:4s;
transition-timing-function: ease-in-out;
}
.box1{
transform: rotate(270deg);
-webkit-transform: rotate(270deg);
width: 50px;
height: 50px;
background-color: blue;
color: yellow;
font-size: 18px;
left: 150px;
top:25px;
position:absolute;
-webkit-transition-property: width height background-color font-size left top transform -webkit-transform color;
-webkit-transition-duration:4s;
-webkit-transition-timing-function: ease-in-out;
transition-property: width height background-color font-size left top transform -webkit-transform color;
transition-duration:4s;
transition-timing-function: ease-in-out;
}
function updateTransition() {
var el = document.querySelector("div.box");
if (el) {
el.className = "box1";
} else {
el = document.querySelector("div.box1");
el.className = "box";
}
return el;
}
var intervalID = window.setInterval(updateTransition, 7000);
Specifications
Browser compatibility
| Desktop | Mobile |
---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Firefox for Android | Opera for Android | Safari on iOS | Samsung Internet |
---|
transition-duration | Chrome
Full support
26-
Full support
26
-
Full support
1
- Prefixed Implemented with the vendor prefix: -webkit-
| Edge
Full support
12-
Full support
12
-
Full support
12
- Prefixed Implemented with the vendor prefix: -webkit-
| Firefox
Full support
16-
Full support
16
-
Full support
4
- Prefixed Implemented with the vendor prefix: -moz-
-
Full support
49
- Prefixed Implemented with the vendor prefix: -webkit-
-
Full support
44
- Prefixed Implemented with the vendor prefix: -webkit-
- Disabled From version 44: this feature is behind the
layout.css.prefixes.webkit preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
| IE
Full support
10-
Full support
10
-
Full support
10
- Prefixed Implemented with the vendor prefix: -ms-
| Opera
Full support
12.1-
Full support
12.1
-
Full support
15
- Prefixed Implemented with the vendor prefix: -webkit-
-
No support
10 — 15
- Prefixed Implemented with the vendor prefix: -o-
| Safari
Full support
9-
Full support
9
-
Full support
3.1
- Prefixed Implemented with the vendor prefix: -webkit-
| WebView Android
Full support
≤37-
Full support
≤37
-
Full support
2
- Prefixed Implemented with the vendor prefix: -webkit-
| Chrome Android
Full support
26-
Full support
26
-
Full support
18
- Prefixed Implemented with the vendor prefix: -webkit-
| Firefox Android
Full support
16-
Full support
16
-
Full support
4
- Prefixed Implemented with the vendor prefix: -moz-
-
Full support
49
- Prefixed Implemented with the vendor prefix: -webkit-
-
Full support
44
- Prefixed Implemented with the vendor prefix: -webkit-
- Disabled From version 44: this feature is behind the
layout.css.prefixes.webkit preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
| Opera Android
Full support
12.1-
Full support
12.1
-
Full support
14
- Prefixed Implemented with the vendor prefix: -webkit-
-
No support
10.1 — 14
- Prefixed Implemented with the vendor prefix: -o-
| Safari iOS
Full support
9-
Full support
9
-
Full support
2
- Prefixed Implemented with the vendor prefix: -webkit-
| Samsung Internet Android
Full support
1.5-
Full support
1.5
-
Full support
1.0
- Prefixed Implemented with the vendor prefix: -webkit-
|
---|
Legend
-
Full support
- Full support
- User must explicitly enable this feature.
- User must explicitly enable this feature.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
See also