CSS3 词条目录
前端Wiki/CSS3/进阶/动画 animation

@keyframes 关键帧

@keyframes 定义一段动画的「剧本」:在哪些时间点、元素是什么状态。浏览器负责在帧之间自动补间:

  • 0%(可用 from 代替)是起点,100%(to)是终点,中间可插任意多的百分比帧。
  • 帧里写的是该时刻的样式,未声明的属性会在相邻帧之间插值。

定义好的剧本用 animation 属性「投给」元素播放:

  • animation: 动画名 时长 缓动 延迟 次数 方向;
  • infinite 无限循环;alternate 往返播放(第二遍倒放),适合呼吸、摇摆类效果。

与 transition 的本质区别:transition 是被动的(状态变了才播一次),animation 是主动的(声明即播放、可循环、可控暂停),且中间可以有任意多个关键状态。

本节要点@keyframes 定义帧剧本(0%~100% 或 from/to),animation 指名播放;infinite 循环、alternate 往返;需要自动播放或循环的动效用 animation。
CSS
<style>
  .pulse {
    width: 60px; height: 60px;
    border-radius: 50%;
    background: #39c5cf;
    /* 播放 pulse:1.5秒 无限循环 往返 */
    animation: pulse 1.5s ease-in-out infinite alternate;
  }
  @keyframes pulse {
    from { transform: scale(1);   opacity: 1; }
    to   { transform: scale(1.3); opacity: .5; }
  }
</style>
<div class="pulse"></div>