CSS @keyframes 规则

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


实例

使 div 元素匀速向下移动:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div
  6. {
  7. width:100px;
  8. height:100px;
  9. background:red;
  10. position:relative;
  11. animation:mymove 5s infinite;
  12. -moz-animation:mymove 5s infinite; /* Firefox */
  13. -webkit-animation:mymove 5s infinite; /* Safari and Chrome */
  14. -o-animation:mymove 5s infinite; /* Opera */
  15. }
  16. @keyframes mymove
  17. {
  18. from {top:0px;}
  19. to {top:200px;}
  20. }
  21. @-moz-keyframes mymove /* Firefox */
  22. {
  23. from {top:0px;}
  24. to {top:200px;}
  25. }
  26. @-webkit-keyframes mymove /* Safari and Chrome */
  27. {
  28. from {top:0px;}
  29. to {top:200px;}
  30. }
  31. @-o-keyframes mymove /* Opera */
  32. {
  33. from {top:0px;}
  34. to {top:200px;}
  35. }
  36. </style>
  37. </head>
  38. <body>
  39. <p><b>注释:</b>本例在 Internet Explorer 中无效。</p>
  40. <div></div>
  41. </body>
  42. </html>

页面底部有更多实例。


浏览器支持

属性
@keyframes43.04.0 -webkit-10.016.05.0 -moz-9.04.0 -webkit-30.015.0 -webkit-12.0 -o-

定义和用法

通过 @keyframes 规则,您能够创建动画。

创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。

在动画过程中,您能够多次改变这套 CSS 样式。

以百分比来规定改变发生的时间,或者通过关键词 "from" 和 "to",等价于 0% 和 100%。

0% 是动画的开始时间,100% 动画的结束时间。

为了获得最佳的浏览器支持,您应该始终定义 0% 和 100% 选择器。

注释:请使用动画属性来控制动画的外观,同时将动画与选择器绑定。


语法

  1. @keyframes animationname {keyframes-selector {css-styles;}}
描述
animationname必需。定义动画的名称。
keyframes-selector

必需。动画时长的百分比。

合法的值:

  • 0-100%
  • from(与 0% 相同)
  • to(与 100% 相同)
css-styles必需。一个或多个合法的 CSS 样式属性。

- 实例

实例 1

在一个动画中添加多个 keyframe 选择器:

  1. @keyframes mymove
  2. {
  3. 0% {top:0px;}
  4. 25% {top:200px;}
  5. 50% {top:100px;}
  6. 75% {top:200px;}
  7. 100% {top:0px;}
  8. }
  9. @-moz-keyframes mymove /* Firefox */
  10. {
  11. 0% {top:0px;}
  12. 25% {top:200px;}
  13. 50% {top:100px;}
  14. 75% {top:200px;}
  15. 100% {top:0px;}
  16. }
  17. @-webkit-keyframes mymove /* Safari 和 Chrome */
  18. {
  19. 0% {top:0px;}
  20. 25% {top:200px;}
  21. 50% {top:100px;}
  22. 75% {top:200px;}
  23. 100% {top:0px;}
  24. }
  25. @-o-keyframes mymove /* Opera */
  26. {
  27. 0% {top:0px;}
  28. 25% {top:200px;}
  29. 50% {top:100px;}
  30. 75% {top:200px;}
  31. 100% {top:0px;}
  32. }
实例 2

在一个动画中改变多个 CSS 样式:

  1. @keyframes mymove
  2. {
  3. 0% {top:0px; background:red; width:100px;}
  4. 100% {top:200px; background:yellow; width:300px;}
  5. }
  6. @-moz-keyframes mymove /* Firefox */
  7. {
  8. 0% {top:0px; background:red; width:100px;}
  9. 100% {top:200px; background:yellow; width:300px;}
  10. }
  11. @-webkit-keyframes mymove /* Safari 和 Chrome */
  12. {
  13. 0% {top:0px; background:red; width:100px;}
  14. 100% {top:200px; background:yellow; width:300px;}
  15. }
  16. @-o-keyframes mymove /* Opera */
  17. {
  18. 0% {top:0px; background:red; width:100px;}
  19. 100% {top:200px; background:yellow; width:300px;}
  20. }
实例 3

带有多个 CSS 样式的多个 keyframe 选择器:

  1. @keyframes mymove
  2. {
  3. 0% {top:0px; left:0px; background:red;}
  4. 25% {top:0px; left:100px; background:blue;}
  5. 50% {top:100px; left:100px; background:yellow;}
  6. 75% {top:100px; left:0px; background:green;}
  7. 100% {top:0px; left:0px; background:red;}
  8. }
  9. @-moz-keyframes mymove /* Firefox */
  10. {
  11. 0% {top:0px; left:0px; background:red;}
  12. 25% {top:0px; left:100px; background:blue;}
  13. 50% {top:100px; left:100px; background:yellow;}
  14. 75% {top:100px; left:0px; background:green;}
  15. 100% {top:0px; left:0px; background:red;}
  16. }
  17. @-webkit-keyframes mymove /* Safari and Chrome */
  18. {
  19. 0% {top:0px; left:0px; background:red;}
  20. 25% {top:0px; left:100px; background:blue;}
  21. 50% {top:100px; left:100px; background:yellow;}
  22. 75% {top:100px; left:0px; background:green;}
  23. 100% {top:0px; left:0px; background:red;}
  24. }
  25. @-o-keyframes mymove /* Opera */
  26. {
  27. 0% {top:0px; left:0px; background:red;}
  28. 25% {top:0px; left:100px; background:blue;}
  29. 50% {top:100px; left:100px; background:yellow;}
  30. 75% {top:100px; left:0px; background:green;}
  31. 100% {top:0px; left:0px; background:red;}
  32. }

相关页面

CSS3 教程:CSS3 动画

分类导航