CSS - At-rules - @keyframes

介绍

关键帧 @keyframes at-rule 规则通过在动画序列中定义关键帧(或 waypoints)的样式来控制 CSS 动画序列中的中间步骤。和 转换 transition 相比,关键帧 keyframes 可以控制动画序列的中间步骤。

JavaScript 可以通过 CSS 对象模型的 CSSKeyframesRule 接口来访问 @keyframes

 

语法:

@keyframes = 
  @keyframes <keyframes-name> { <rule-list> }  

<keyframes-name> = 
  <custom-ident>  |
  <string>        
  • custom-ident:帧列表的名称。名称必须符合 CSS 语法中对标识符的定义。

  • from:等价于 0%,开始的地方。

  • to:等价于 100%。结束的地方。

  • <percentage>:动画序列中触发关键帧的时间点,使用百分值来表示。

 

应用

要使用关键帧,先创建一个带名称的 @keyframes 规则,以便后续使用 animation-name属性将动画同其关键帧声明匹配。每个 @keyframes 规则包含多个关键帧,也就是一段样式块语句,每个关键帧有一个百分比值作为名称,代表在动画进行中,在哪个阶段触发这个帧所包含的样式。

可以按任意顺序列出关键帧百分比;它们将按照其应该发生的顺序来处理。

让关键帧序列生效

如果一个关键帧规则没有指定动画的开始或结束状态(也就是,0%/from 和100%/to,浏览器将使用元素的现有样式作为起始/结束状态。这可以用来从初始状态开始元素动画,最终返回初始状态。

如果在关键帧的样式中使用了不能用作动画的属性,那么这些属性会被忽略掉,支持动画的属性仍然是有效的,不受波及。

重复定义

如果多个关键帧使用同一个名称,以最后一次定义的为准。

@keyframes 不存在层叠样式 (cascade) 的情况,所以动画在一个时刻(阶段)只会使用一个的关键帧的数据。

如果一个 @keyframes 内的关键帧的百分比存在重复的情况,则 @keyframes 规则中该百分比的所有关键帧都将用于该帧。如果多个关键帧指定了相同的百分比值,则 @keyframes 规则内是可以使用层叠样式的。

属性个数不定

如果一个关键帧中没有出现其他关键帧中的属性,那么这个属性将被当作插值使用(不能使用插值的属性除外,这些属性会被忽略掉)。

例如:

@keyframes identifier {
  0% { top: 0; left: 0; }
  30% { top: 50px; }
  68%, 72% { left: 50px; }
  100% { top: 100px; left: 100%; }
}

例子中,top属性分别出现在关键帧 0%30%100% 的中,而 left属性分别出现在关键帧 0%68%72%100% 中。

同一关键帧中的相同属性被重复定义

如果某一个关键帧出现了重复的定义,且重复的关键帧中的 CSS 属性值不同,则以最后一次定义的属性为准。例如:

@keyframes identifier {
  0% { top: 0; }
  50% { top: 30px; left: 20px; }
  50% { top: 10px; }
  100% { top: 0; }
}

上面这个例子中,50% 关键帧中分别最后设置的属性 top: 10pxleft: 20px 是有效的,但是其他的属性会被忽略。

Firefox 14 开始支持层叠 keyframes。

关键帧中的 !important

关键帧中出现的 !important 将会被忽略。

@keyframes important1 {
  from { margin-top: 50px; }
  50%  { margin-top: 150px !important; } /* 忽略 */
  to   { margin-top: 100px; }
}

@keyframes important2 {
  from { margin-top: 50px;
         margin-bottom: 100px; }
  to   { margin-top: 150px !important; /* 忽略 */
         margin-bottom: 50px; }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容