@keyframes
语法
@keyframes slidein {
from {
transform: translateX(0%);
}
to {
transform: translateX(100%);
}
}
值
<custom-ident>
-
标识关键帧列表的名称。这必须与 CSS 语法中的标识符生成匹配。
from
-
0%
的起始偏移量。 to
-
100%
的结束偏移量。 <percentage>
-
动画序列中指定关键帧发生的时间的百分比。
<timeline-range-name>
<percentage>
-
在指定
animation-range
中指定关键帧发生时间的百分比。有关使用命名时间线范围的动画类型的更多信息,请参阅 CSS 滚动驱动动画。
描述
要使用关键帧,请创建一个 @keyframes
规则,其名称由 animation-name
属性使用以将动画与其关键帧声明匹配。每个 @keyframes
规则包含一个关键帧选择器样式列表,该列表指定动画中关键帧发生的百分比,以及包含该关键帧样式的块。
可以按任何顺序列出关键帧百分比;它们将按应该发生的顺序处理。
JavaScript 可以使用 CSS 对象模型接口 CSSKeyframesRule
访问 @keyframes
at-规则。
有效的关键帧列表
如果关键帧规则没有指定动画的开始或结束状态(即,0%
/from
和 100%
/to
),浏览器将使用元素的现有样式作为开始/结束状态。这可以用来从元素的初始状态到其初始状态进行动画。
在关键帧规则中无法动画的属性将被忽略,但支持的属性仍将被动画。
解决重复项
如果针对给定名称存在多个关键帧集,则解析器遇到的最后一个关键帧集将被使用。@keyframes
规则不会级联,因此动画永远不会从多个规则集中派生关键帧。
如果给定的动画时间偏移量重复,则 @keyframes
规则中针对该百分比的所有关键帧都将用于该帧。如果多个关键帧指定相同的百分比值,则在 @keyframes
规则内会发生级联。
当某些关键帧中省略属性时
当关键帧被多次定义时
如果关键帧被多次定义,但并非所有受影响的属性都在每个关键帧中,则将考虑这些关键帧中指定的所有值。例如
@keyframes identifier {
0% {
top: 0;
}
50% {
top: 30px;
left: 20px;
}
50% {
top: 10px;
}
100% {
top: 0;
}
}
在本例中,在 50%
关键帧处,使用的值为 top: 10px
和 left: 20px
。
级联关键帧从 Firefox 14 开始支持。
关键帧中的 !important
使用 !important
限定的关键帧中的声明将被忽略。
@keyframes important1 {
from {
margin-top: 50px;
}
50% {
margin-top: 150px !important; /* ignored */
}
to {
margin-top: 100px;
}
}
@keyframes important2 {
from {
margin-top: 50px;
margin-bottom: 100px;
}
to {
margin-top: 150px !important; /* ignored */
margin-bottom: 50px;
}
}
正式语法
@keyframes =
@keyframes <keyframes-name> { <qualified-rule-list> }
<keyframes-name> =
<custom-ident> |
<string>
示例
CSS 动画示例
请参阅 使用 CSS 动画 和 使用滚动驱动动画使元素在滚动时动画 以获取示例。
规范
规范 |
---|
CSS 动画级别 1 # keyframes |
浏览器兼容性
BCD 表仅在浏览器中加载