@keyframes

语法:

@keyframes <identifier> { <keyframes-blocks> }

<keyframes-blocks>:[ [ from | to | <percentage> ]{ sRules } ] [ [ , from | to | <percentage> ]{ sRules } ]*

取值:

<identifier>
identifier定义一个动画名称
<keyframes-blocks>:
定义动画在每个阶段的样式,即帧动画。

说明:

指定动画名称和动画效果。
  • @keyframes定义的动画名称用来被animation-name所使用。
  • 定义动画时,简单的动画可以直接使用关键字from和to,即从一种状态过渡到另一种状态:

    示例代码:

    @keyframes testanimations { from { opacity: 1; } to { opacity: 0; } }

    其中testanimations是该动画的名字,该动画表示某个东西将逐渐消失。

  • 如果复杂的动画,可以混合<percentage>去设置某个时间段内的任意时间点的样式:

    示例代码:

    @keyframes testanimations { from { transform: translate(0, 0); } 20% { transform: translate(20px, 20px); } 40% { transform: translate(40px, 0); } 60% { transform: translate(60px, 20); } 80% { transform: translate(80px, 0); } to { transform: translate(100px, 20px); } }
  • 当然,也可以不使用关键字from和to,而都使用<percentage>

    示例代码:

    @keyframes testanimations{ 0% { transform: translate(0, 0); } 20% { transform: translate(20px, 20px); } 40% { transform: translate(40px, 0); } 60% { transform: translate(60px, 20px); } 80% { transform: translate(80px, 0); } 100% { transform: translate(100px, 20px); } }

    注意,这里的0%不能简写成0,0是非标准语法(虽然被某些浏览器所支持)。

兼容性:

  • 浅绿 = 支持
  • 红色 = 不支持
  • 粉色 = 部分支持
IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
6.0-9.0 2.0-4.0 4.0-43.0
-webkit-
3.1-3.2 15.0-29.0
-webkit-
3.2-8.1
-webkit-
2.1-3.0
-webkit-
18.0-40.0
-webkit-
10.0+ 5.0-15.0
-moz-
4.0-8.1
-webkit-
4.0+
-webkit-
16.0

示例: