CSS transition-timing-function sets the speed of the transition effect from start to end.
Syntax:
transition-timing-function: ease | ease-in | ease-out | ease-in-out | linear | step-start |
step-end | steps(int, start|end) | cubic-bezier(n,n,n,n) |
initial | inherit;
Note:
This property does not work in Internet Explorer 9 and earlier versions.
Source Code:
<!DOCTYPE html>
<html>
<head>
<style>
div{
background: blue;
color: white;
border: 2px dotted black;
width: 200px;
height: 30px;
text-align: center;
padding-top: 15px;
transition: width 3s;}
div:hover{width: 400px;}
#ease {transition-timing-function: ease;}
#ease-in {transition-timing-function: ease-in;}
#ease-out {transition-timing-function: ease-out;}
#ease-in-out {transition-timing-function: ease-in-out;}
#linear {transition-timing-function: linear;}
</style>
</head>
<body>
<h2 class="title">CSS transition-timing-function</h2>
<div id="ease">ease</div>
<div id="ease-in">ease-in</div>
<div id="ease-out">ease-out</div>
<div id="ease-in-out">ease-in-out</div>
<div id="linear">Linear</div>
</body>
</html>
Output:
Click below the “Try it Yourself” button to understand more in detail about the CSS transition-timing function.
Steps Function Values
See an example below of how you can use the step function value in the CSS transition-timing-function.
Syntax:
transition-timing-function: step-start;
transition-timing-function: step-end;
transition-timing-function: steps (5, start);
transition-timing-function: steps (5, end);
transition-timing-function: steps (5, jump-start);
transition-timing-function: steps (5, jump-end);
transition-timing-function: steps (5, jump-both);
transition-timing-function: steps (5, jump-none);
Source Code:
<!DOCTYPE html>
<html>
<head>
<style>
div{
background: blue;
color: white;
border: 2px dotted black;
width: 200px;
height: 30px;
text-align: center;
padding-top: 15px;
transition: width 3s;}
div:hover{width: 400px;}
#step-start {transition-timing-function: step-start;}
#step-end {transition-timing-function: step-end;}
#step-int-start {transition-timing-function: steps (5, start);}
#step-int-end {transition-timing-function: steps (5, end);}
#jump-start {transition-timing-function: steps (5, jump-start);}
#jump-end {transition-timing-function: steps (5, jump-end);}
#jump-both {transition-timing-function: steps (5, jump-both);}
#jump-none {transition-timing-function: steps (5, jump-none);}
</style>
</head>
<body>
<h2 class="title">CSS transition-timing-function</h2>
<div id="step-start">step-start</div>
<div id="step-end">step-end</div>
<div id="step-int-start">step-int-start</div>
<div id="step-int-endt">step-int-end</div>
<div id="jump-start">jump-start</div>
<div id="jump-end">jump-end</div>
<div id="jump-both">jump-both</div>
<div id="jump-none">jump-none</div>
</body>
</html>
Output:
Cubic-Bezier:
The ease, ease-in, ease-out, ease-in-out, linear, and cubic-bezier() timing functions use a bezier curve.
Syntax:
#ease{transition-timing-function: cubic-bezier (0.25, 0.1, 0.25, 1.0);}
#ease-in{transition-timing-function: cubic-bezier (0.42, 0, 1.0, 1.0);}
#ease-out{transition-timing-function: cubic-bezier (0, 0, 0.58 ,1.0);}
#ease-in-out{transition-timing-function: cubic-bezier (0.42, 0, 0.58, 1.0);}
#linear{transition-timing-function: cubic-bezier (0, 0, 1.0, 1.0);}
ease
The ease function is equivalent to cubic-bezier (0.25, 0.1, 0.25, 1.0).
ease-in
The ease function is equivalent to cubic-bezier (0.42, 0, 1.0, 1.0).
ease-out
The ease function is equivalent to cubic-bezier (0, 0, 0.58, 1.0).
ease-in-out
The ease function is equivalent to cubic-bezier (0.42, 0, 0.58, 1.0).
linear
The ease function is equivalent to cubic-bezier (0, 0, 1.0, 1.0).
Cubic-Bezier()
It specifies a cubic bezier curve and values are x1, y1, x2, y2. x1 and x2 values must be in a range of 0,1 but y1 and y2 can exceed the range.
Source Code:
<!DOCTYPE html>
<html>
<head>
<style>
div{
background: blue;
color: white;
border: 2px dotted black;
width: 200px;
height: 30px;
text-align: center;
padding-top: 15px;
transition: width 3s;}
div:hover{width: 400px;}
#ease{transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1.0);}
#ease-in{transition-timing-function: cubic-bezier(0.42, 0, 1.0, 1.0);}
#ease-out{transition-timing-function: cubic-bezier(0, 0, 0.58 ,1.0);}
#ease-in-out{transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1.0);}
#linear{transition-timing-function: cubic-bezier(0, 0, 1.0, 1.0);}
</style>
</head>
<body>
<h2 class="title">CSS transition-timing-function: cubic-bezier</h2>
<div id="ease">ease</div>
<div id="ease-in">ease-in</div>
<div id="ease-out">ease-out</div>
<div id="ease-in-out">ease-in-out</div>
<div id="linear">linear</div>
</body>
</html>
Output:
You may be interested in the following topics:
- CSS Transition-timing-function
- CSS Transition-property
- CSS Transition-duration
- CSS Transition-delay
- CSS Transition
- CSS Transition (All Properties)