CSS3 新增的动画属性: 通过 CSS3 动画,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画 以及 JavaScript。作为页面切换的交互动画。
NOTE:
- 一个元素要使用多个动画时(比如前一秒动画 1,后面动画 2),可以在 css 属性中用一个 animation 表示,动画之间用逗号相隔。例子:animation: animation1 1s, animation2 1s 1s infinite alternate ;
怎么使用#
首先用我的话来大致概括一下 css3 动画的使用流程:
- 首先定义一个动画,使用@keyframes来定义动画(包括动画名、动画过程状态)
- 在一个元素的 class 中引用刚定义的动画,设定相关参数(动画时长、动画线性、动画延迟、元素开始和结束的状态、动画是否暂停)
这样一个 css3 动画就被定义和使用了。
1. 定义动画#
语法:#
- @keyframes@keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能作为动画中某一帧的状态。
 示例: 规定一个名叫- myAnimation的动画- @keyframes myAnimation { 0% { background: red; } 25% { background: yellow; } 50% { background: blue; } 100% { background: green; } } @-moz-keyframes myAnimation /* Firefox */ { 0% { background: red; } 25% { background: yellow; } 50% { background: blue; } 100% { background: green; } } @-webkit-keyframes myAnimation /* Safari 和 Chrome */ { 0% { background: red; } 25% { background: yellow; } 50% { background: blue; } 100% { background: green; } } @-o-keyframes myAnimation /* Opera */ { 0% { background: red; } 25% { background: yellow; } 50% { background: blue; } 100% { background: green; } }
2. 引用动画,设定参数#
在要设定动画的元素 class 上使用
语法:#
- animation所有动画属性的简写属性,除了 animation-play-state 和 animation-fill-mode 属性。
 语法:- animation: name duration timing-function delay iteration-count direction;
 语法参数含义参看后面的语法解析。
 示例:- div { animation: myAnimation 5s infinite; -webkit-animation: myAnimation 5s infinite; /* Safari 和 Chrome */ }
- animation-name要引用 @keyframes 动画的名称。
- animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。
- animation-timing-function规定动画的速度曲线。默认是 "ease"。
 语法:- animation-timing-function: value;
 _linear_: 动画从头到尾的速度是相同的。
 _ease_: 默认。动画以低速开始,然后加快,在结束前变慢。
 _ease-in_: 动画以低速开始。
 _ease-out_: 动画以低速结束。
 _ease-in-out_: 动画以低速开始和结束。
 _cubic-bezier(n,n,n,n)_: 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。
 示例:- /* W3C 和 Opera: */ #div1 { animation-timing-function: linear; } /* Firefox: */ #div1 { -moz-animation-timing-function: linear; } /* Safari 和 Chrome: */ #div1 { -webkit-animation-timing-function: linear; }
- animation-delay规定动画何时开始。默认是 0。
- animation-iteration-count规定动画被播放的次数。默认是 1。
 语法:- animation-iteration-count: value;
 _n_: 定义动画播放次数的数值。
 _infinite_: 规定动画应该无限次播放。
 示例:- div { animation-iteration-count: 3; -webkit-animation-iteration-count: 3; /* Safari 和 Chrome */ }
- animation-direction规定动画是否在下一周期逆向地播放。默认是 "normal"。
 语法:- animation-direction: normal|alternate;
 _normal_: 默认值。动画应该正常播放。
 _alternate_: 动画应该轮流反向播放。
 示例:- div { animation-direction: alternate; -webkit-animation-direction: alternate; /* Safari 和 Chrome */ }
- animation-play-state规定动画是否正在运行或暂停。默认是 "running"。
 语法:- animation-play-state: paused|running;
 _paused_: 规定动画已暂停。
 _running_: 规定动画正在播放。
 示例:- div { animation-play-state: paused; -webkit-animation-play-state: paused; /* Safari 和 Chrome */ }
- animation-fill-mode规定对象动画时间之外的状态。
 语法:- animation-fill-mode : none | forwards | backwards | both;
 _none_: 不改变默认行为。
 _forwards_: 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
 _backwards_: 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
 _both_: 向前和向后填充模式都被应用。
 示例:- div { animation-fill-mode: forwards; -webkit-animation-fill-mode: forwards; /* Safari 和 Chrome */ }
效果:#
浏览器支持#

Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。
Chrome 和 Safari 需要前缀 -webkit-。