animation-timing-function
animation-timing-function
CSS 属性设置动画在每个循环持续时间内的进度。
试试看
通常使用简写属性 animation
一次设置所有动画属性很方便。
语法
/* 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;
/* cubic-bezier() function values */
animation-timing-function: cubic-bezier(0.42, 0, 1, 1); /* ease-in */
animation-timing-function: cubic-bezier(0, 0, 0.58, 1); /* ease-out */
animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); /* ease-in-out */
/* linear() function values */
animation-timing-function: linear(0, 0.25, 1);
animation-timing-function: linear(0 0%, 0.25 50%, 1 100%);
animation-timing-function: linear(0, 0.25 50% 75%, 1);
animation-timing-function: linear(0, 0.25 50%, 0.25 75%, 1);
/* steps() function values */
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.1);
/* Global values */
animation-timing-function: inherit;
animation-timing-function: initial;
animation-timing-function: revert;
animation-timing-function: revert-layer;
animation-timing-function: unset;
值
<easing-function>
-
对应于给定动画的缓动函数,由
animation-name
确定。非阶跃关键字值(
ease
、linear
、ease-in-out
等)每个都表示具有固定四点值的立方贝塞尔曲线,而cubic-bezier()
函数值允许指定非预定义值。steps()
缓动函数将输入时间划分为指定数量的等长间隔。其参数包括步数和步位置。linear
-
等于
cubic-bezier(0.0, 0.0, 1.0, 1.0)
,以均匀的速度进行动画。 ease
-
等于
cubic-bezier(0.25, 0.1, 0.25, 1.0)
,默认值,在动画中间向速度增加,并在结束时减速。 ease-in
-
等于
cubic-bezier(0.42, 0, 1.0, 1.0)
,开始缓慢,动画属性的过渡速度增加直到完成。 ease-out
-
等于
cubic-bezier(0, 0, 0.58, 1.0)
,开始快速,随着动画的继续而减速。 ease-in-out
-
等于
cubic-bezier(0.42, 0, 0.58, 1.0)
,动画属性缓慢过渡,加速,然后再次减速。 cubic-bezier(<number [0,1]> , <number> , <number [0,1]> , <number>)
-
作者定义的立方贝塞尔曲线,其中第一个和第三个值必须在 0 到 1 的范围内。
linear(<number> <percentage>{1,2}, …)
-
该函数在提供的缓动停止点之间进行线性插值。停止点是一对输出进度和输入百分比。输入百分比是可选的,如果未指定则会推断。如果未提供输入百分比,则第一个和最后一个停止点分别设置为
0%
和100%
,中间的停止点接收通过在具有百分比值的最近的前一个和下一个点之间线性插值得出的百分比值。 steps(<integer>, <step-position>)
-
沿着过渡的 n 个停止点显示动画迭代,每个停止点显示相同的时间长度。例如,如果 n 为 5,则有 5 个步骤。动画是否在 0%、20%、40%、60% 和 80% 处暂时保持,在 20%、40%、60%、80% 和 100% 处,或者在动画的 0% 和 100% 之间进行 5 次停止,或者进行 5 次停止,包括 0% 和 100% 标记(在 0%、25%、50%、75% 和 100% 处),取决于使用以下哪个步骤位置
step-start
-
等效于
steps(1, jump-start)
step-end
-
等效于
steps(1, jump-end)
注意:当您在 animation-*
属性上指定多个用逗号分隔的值时,它们将按 animation-name
出现的顺序应用于动画。对于动画数量和 animation-*
属性值不匹配的情况,请参阅 设置多个动画属性值。
注意:animation-timing-function
在创建 CSS 滚动驱动的动画 时与常规基于时间的动画具有相同的效果。
描述
可以在 @keyframes 规则中的单个关键帧上指定缓动函数。如果在关键帧上未指定animation-timing-function
,则该关键帧将使用应用动画的元素的animation-timing-function
对应的值。
在关键帧内,animation-timing-function
是一个特定于 at-rule 的描述符,而不是同名属性。计时没有被动画化。相反,关键帧的缓动函数是在逐个属性的基础上从指定它的关键帧应用到指定该属性的下一个关键帧,或者如果后续没有指定该属性的关键帧,则应用到动画结束。因此,在100%
或to
关键帧上指定的animation-timing-function
将永远不会被使用。
正式定义
正式语法
animation-timing-function =
<easing-function>#
<easing-function> =
linear |
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>
<linear-easing-function> =
linear( <linear-stop-list> )
<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )
<step-easing-function> =
step-start |
step-end |
steps( <integer> , <step-position>? )
<linear-stop-list> =
[ <linear-stop> ]#
<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end
<linear-stop> =
<number> &&
<linear-stop-length>?
<linear-stop-length> =
<percentage>{1,2}
示例
本节中的所有示例都使用不同的 animation-timing-function
值为几个 <div>
元素的 width
和 background-color
属性设置动画。宽度从 0
动画到 100%
,背景颜色从青柠色动画到品红色。
线性函数示例
此示例演示了各种 linear()
缓动函数值的效用。
下图显示了本示例中使用的所有 linear()
函数值的图形。输入进度(时间)绘制在 x 轴上,输出进度绘制在 y 轴上。根据语法,输入进度范围从 0 到 100%,输出范围从 0 到 1。
请注意,输出可以向前或向后。
三次贝塞尔曲线示例
此示例演示了各种贝塞尔曲线缓动函数的效用。
下图显示了本示例中使用的所有三次贝塞尔曲线函数值的图形。输入进度(时间)范围从 0 到 1,输出进度范围从 0 到 1。
步骤示例
此示例演示了几个步骤缓动函数值的效用。
下图显示了本示例中使用的所有 step()
函数值的图形。输入进度(时间)和输出进度范围从 0 到 1。
规范
规范 |
---|
CSS 动画级别 1 # animation-timing-function |
CSS 缓动函数级别 1 # 线性缓动函数解析 |
浏览器兼容性
BCD 表格仅在浏览器中加载