试一试
transition-timing-function: linear;
transition-timing-function: ease-in;
transition-timing-function: steps(6, end);
transition-timing-function: cubic-bezier(0.29, 1.01, 1, -0.68);
<section id="default-example">
<div id="example-element">Hover to see<br />the transition.</div>
</section>
#example-element {
background-color: #e4f0f5;
color: black;
padding: 1rem;
border-radius: 0.5rem;
font: 1em monospace;
width: 100%;
transition: margin-right 2s;
}
#default-example:hover > #example-element {
background-color: #990099;
color: white;
margin-right: 40%;
}
这本质上允许您建立一个加速曲线,从而使过渡的速度在其持续时间内有所变化。
此加速曲线使用一个<easing-function> 为每个要过渡的属性进行定义。
您可以指定多个缓动函数;每个缓动函数都将应用于由transition-property 属性(它充当 transition-property 列表)指定的相应属性。如果指定的缓动函数少于 transition-property 列表中的缓动函数,则用户代理必须通过重复值列表来计算要使用的值,直到每个过渡属性都有一个值。如果缓动函数更多,则列表将被截断为适当的大小。在这两种情况下,CSS 声明都保持有效。
语法
/* Keyword values */
transition-timing-function: ease;
transition-timing-function: ease-in;
transition-timing-function: ease-out;
transition-timing-function: ease-in-out;
transition-timing-function: linear;
transition-timing-function: step-start;
transition-timing-function: step-end;
/* Function values */
transition-timing-function: steps(4, jump-end);
transition-timing-function: cubic-bezier(0.1, 0.7, 1, 0.1);
/* Steps Function keywords */
transition-timing-function: steps(4, jump-start);
transition-timing-function: steps(10, jump-end);
transition-timing-function: steps(20, jump-none);
transition-timing-function: steps(5, jump-both);
transition-timing-function: steps(6, start);
transition-timing-function: steps(8, end);
/* Multiple easing functions */
transition-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1, 0.1);
/* Global values */
transition-timing-function: inherit;
transition-timing-function: initial;
transition-timing-function: revert;
transition-timing-function: revert-layer;
transition-timing-function: unset;
值
<easing-function>-
每个
<easing-function>表示缓动函数,用于链接到transition-property中定义的相应过渡属性。非步进关键字值(ease、linear、ease-in-out 等)每个都代表一个具有固定四个点值的立方贝塞尔曲线,其中 cubic-bezier() 函数值允许使用非预定义值。步进缓动函数将输入时间分成指定数量的等长间隔。它由步数和步进位置定义。
ease-
等于
cubic-bezier(0.25, 0.1, 0.25, 1.0),默认值,过渡中间速度增加,结尾速度减慢。 linear-
等于
cubic-bezier(0.0, 0.0, 1.0, 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(p1, p2, p3, p4)-
作者定义的立方贝塞尔曲线,其中 p1 和 p3 值必须在 0 到 1 的范围内。
steps(n, <jump-term>)-
在过渡过程中沿着 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)
无障碍
某些动画可以提供帮助,例如引导用户了解预期的操作,显示用户界面中的关系,并告知用户已发生的操作。动画可以帮助减少认知负荷,防止变化盲点,并在空间关系中建立更好的回忆。然而,一些动画可能对患有注意力缺陷多动症 (ADHD) 等认知问题的人造成问题,某些类型的运动可能会引发前庭疾病、癫痫、偏头痛和视网膜敏感性。
考虑提供暂停或禁用动画的机制,并使用减少运动媒体查询(或等效的用户代理客户端提示Sec-CH-Prefers-Reduced-Motion)为表达了对较少动画偏好的用户创建补充体验。
正式定义
正式语法
transition-timing-function =
<easing-function>#
<easing-function> =
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>
<linear-easing-function> =
linear |
<linear()>
<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
<cubic-bezier()>
<step-easing-function> =
step-start |
step-end |
<steps()>
<linear()> =
linear( [ <number> && <percentage>{0,2} ]# )
<cubic-bezier()> =
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )
<steps()> =
steps( <integer> , <step-position>? )
<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end
示例
三次贝塞尔曲线示例
.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;
}
.cb {
transition-timing-function: cubic-bezier(0.2, -2, 0.8, 2);
}
步进示例
.jump-start {
transition-timing-function: steps(5, jump-start);
}
.jump-end {
transition-timing-function: steps(5, jump-end);
}
.jump-none {
transition-timing-function: steps(5, jump-none);
}
.jump-both {
transition-timing-function: steps(5, jump-both);
}
.step-start {
transition-timing-function: step-start;
}
.step-end {
transition-timing-function: step-end;
}
规范
| 规范 |
|---|
| CSS 过渡 # transition-timing-function-property |
浏览器兼容性
加载中…