animation-timing-function
CSS
property sets how an animation progresses through the duration of each cycle.
It is often convenient to use the shorthand property
animation
to set all animation properties at once.
/* Keyword values */ animation-timing-function: ease; animation-timing-function: ease-in; animation-timing-function: ease-out; animation-timing-function: ease-in-out; animation-timing-function: linear; animation-timing-function: step-start; animation-timing-function: step-end; /* Function values */ animation-timing-function: cubic-bezier(0.1, 0.7, 1.0, 0.1); animation-timing-function: steps(4, end); /* Steps Function keywords */ animation-timing-function: steps(4, jump-start); animation-timing-function: steps(10, jump-end); animation-timing-function: steps(20, jump-none); animation-timing-function: steps(5, jump-both); animation-timing-function: steps(6, start); animation-timing-function: steps(8, end); /* Multiple animations */ animation-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1.0, 0.1); /* Global values */ animation-timing-function: inherit; animation-timing-function: initial; animation-timing-function: unset;
Timing functions may be specified on individual keyframes in a
@keyframes
rule. If no
animation-timing-function
is specified on a keyframe, the corresponding value of
animation-timing-function
from the element to which the animation is applied is used for that keyframe.
A keyframe's timing function is applied on a property-by-property basis from the keyframe on which it is specified until the next keyframe specifying that property, or until the end of the animation if there is no subsequent keyframe specifying that property. As a result, an
animation-timing-function
specified on the
100%
or
to
keyframe will never be used.
<timing-function>
The timing function that corresponds to a given animation, as determined by
animation-name
.
The non-step keyword values (ease, linear, ease-in-out, etc.) each represent cubic Bézier curve with fixed four point values, with the cubic-bezier() function value allowing for a non-predefined value. The step timing functions divides the input time into a specified number of intervals that are equal in length. It is defined by a number of steps and a step position.
ease
cubic-bezier(0.25, 0.1, 0.25, 1.0)
, the default value, increases in velocity towards the middle of the animation, slowing back down at the end.
linear
cubic-bezier(0.0, 0.0, 1.0, 1.0)
, animates at an even speed.
ease-in
cubic-bezier(0.42, 0, 1.0, 1.0)
, starts off slowly, with the speed of the transition of the animating properting increasing until complete.
ease-out
cubic-bezier(0, 0, 0.58, 1.0)
, starts quickly, slowing down the animation continues. •
ease-in-out
cubic-bezier(0.42, 0, 0.58, 1.0)
, with the animating properties slowly transitioning, speeding up, and then slowing down again.
cubic-bezier(p1, p2, p3, p4)
An author defined cubic-bezier curve, where the p1 and p3 values must be in the range of 0 to 1.
steps(n, <jumpterm>)
jump-start
Denotes a left-continuous function, so that the first jump happens when the animation begins;
jump-end
Denotes a right-continuous function, so that the last jump happens when the animation ends;
jump-none
There is no jump on either end. Instead, holding at both the 0% mark and the 100% mark, each for 1/n of the duration.
jump-both
Includes pauses at both the 0% and 100% marks, effectively adding a step during the animation iteration.
start
jump-start
.
end
jump-end
.
step-start
steps(1, jump-start)
step-end
steps(1, jump-end)
注意
: When you specify multiple comma-separated values on an
animation-*
property, they will be assigned to the animations specified in the
animation-name
property in different ways depending on how many there are. For more information, see
Setting multiple animation property values
.
| 初始值 |
ease
|
|---|---|
| 适用于 |
所有元素,
::before
and
::after
pseudo-elements
|
| 继承 | no |
| 计算值 | 如指定 |
| 动画类型 | discrete |
<timing-function>#where
<timing-function> = linear | <cubic-bezier-timing-function> | <step-timing-function>where
<cubic-bezier-timing-function> = ease | ease-in | ease-out | ease-in-out | cubic-bezier(<number <a href="/en-US/docs/CSS/Value_definition_syntax#Brackets" title="Brackets: enclose several entities, combinators, and multipliers to transform them as a single component">[0,1]>, <number>, <number <a href="/en-US/docs/CSS/Value_definition_syntax#Brackets" title="Brackets: enclose several entities, combinators, and multipliers to transform them as a single component">[0,1]>, <number>)
<step-timing-function> = step-start | step-end | steps(<integer>[, <step-position>]?)where
<step-position> = jump-start | jump-end | jump-none | jump-both | start | end
<div class="parent"> <div class="ease">ease</div> <div class="easein">ease-in</div> <div class="easeout">ease-out</div> <div class="easeinout">ease-in-out</div> <div class="linear">linear</div> <div class="cb">cubic-bezier(0.2,-2,0.8,2)</div> </div>
.parent > div[class] {
animation-name: changeme;
animation-duration: 10s;
animation-iteration-count: infinite;
margin-bottom: 4px;
}
@keyframes changeme {
0% {
min-width: 12em;
width: 12em;
background-color: black;
border: 1px solid red;
color: white;
}
100% {
width: 90vw;
min-width: 24em;
background-color: magenta;
color: yellow;
border: 1px solid orange;
}
}
.ease {
animation-timing-function: ease;
}
.easein {
animation-timing-function: ease-in;
}
.easeout {
animation-timing-function: ease-out;
}
.easeinout {
animation-timing-function: ease-in-out;
}
.linear {
animation-timing-function: linear;
}
.cb {
animation-timing-function: cubic-bezier(0.2,-2,0.8,2);
}
<div class="parent"> <div class="jump-start">jump-start</div> <div class="jump-end">jump-end</div> <div class="jump-both">jump-both</div> <div class="jump-none">jump-none</div> <div class="start">start</div> <div class="end">end</div> <div class="step-start">step-start</div> <div class="step-end">step-end</div> </div>
.parent > div[class] {
animation-name: changeme;
animation-duration: 10s;
animation-iteration-count: infinite;
margin-bottom: 4px;
}
@keyframes changeme {
0% {
min-width: 12em;
width: 12em;
background-color: black;
border: 1px solid red;
color: white;
}
100% {
width: 90vw;
min-width: 24em;
background-color: magenta;
color: yellow;
border: 1px solid orange;
}
}
.jump-start {
animation-timing-function: steps(5, jump-start);
}
.jump-end {
animation-timing-function: steps(5, jump-end);
}
.jump-none {
animation-timing-function: steps(5, jump-none);
}
.jump-both {
animation-timing-function: steps(5, jump-both);
}
.start {
animation-timing-function: steps(5, start);
}
.end {
animation-timing-function: steps(5, end);
}
.step-start {
animation-timing-function: step-start;
}
.step-end {
animation-timing-function: step-end;
}
| 规范 | 状态 | 注释 |
|---|---|---|
|
CSS 动画
The definition of 'animation-timing-function' in that specification. |
工作草案 | 初始定义。 |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
animation-timing-function
|
Chrome 完整支持 43 | Edge 完整支持 12 |
Firefox
完整支持
16
|
IE 完整支持 10 |
Opera
完整支持
30
|
Safari 完整支持 9 | WebView Android 完整支持 43 | Chrome Android 完整支持 43 |
Firefox Android
完整支持
16
|
Opera Android
完整支持
30
|
Safari iOS 完整支持 9 | Samsung Internet Android 完整支持 4.0 |
jump-
keywords for
steps()
|
Chrome 完整支持 77 | Edge 完整支持 79 | Firefox 完整支持 65 | IE 不支持 No | Opera 完整支持 64 | Safari 完整支持 14 | WebView Android 完整支持 77 | Chrome Android 完整支持 77 | Firefox Android 完整支持 65 | Opera Android 完整支持 55 | Safari iOS 完整支持 14 | Samsung Internet Android 完整支持 12.0 |
完整支持
不支持
用户必须明确启用此特征。
要求使用供应商前缀或不同名称。
<timing-function>
AnimationEvent
API