CSS3 Animation 动画

CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation;

Animation主要是对元素实现了一些基本的动画效果,它只能应用在页面的DOM元素上。

Animation:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画。可以设置多个关键贞。

w3school在线文档说明

http://www.w3school.com.cn/css3/css3_animation.asp

不同浏览器兼容

div{
animation:;
-moz-animation:;        /* Firefox */
-webkit-animation:;     /* Safari 和 Chrome */
-o-animation:;  /* Opera */
}

Chrome 和 Safari 需要前缀 -webkit-。

Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes 规则和 animation 属性。

注释:Internet Explorer 9,以及更早的版本,不支持 @keyframe 规则或 animation 属性。

  

CSS3 Animation 动画属性

下面的表格列出了 @keyframes 规则和所有动画属性:

属性描述CSS
animation所有动画属性的简写属性,除了 animation-play-state 属性。3
@keyframes规定动画。3
animation-name规定 @keyframes 动画的名称。3
animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0。3
animation-timing-function规定动画的速度曲线。默认是 "ease"。3
animation-delay规定动画何时开始。默认是 0。3
animation-iteration-count规定动画被播放的次数。默认是 1。3
animation-direction规定动画是否在下一周期逆向地播放。默认是 "normal"。3
animation-play-state规定动画是否正在运行或暂停。默认是 "running"。3
animation-fill-mode规定对象动画时间之外的状态。3

animation

animation 属性是一个简写属性,用于设置六个动画属性:

  • animation-name
  • animation-duration
  • animation-timing-function
  • animation-delay
  • animation-iteration-count
  • animation-direction

注释:请始终规定 animation-duration 属性,否则时长为 0,就不会播放动画了。

animation: name duration timing-function delay iteration-count direction;

@keyframes

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

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

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

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

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

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

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

@keyframes animationname {keyframes-selector {css-styles;}}
@keyframes mymove
{
0%   {top:0px;}
25%  {top:200px;}
50%  {top:100px;}
75%  {top:200px;}
100% {top:0px;}
}

@-moz-keyframes mymove /* Firefox */
{
0%   {top:0px;}
25%  {top:200px;}
50%  {top:100px;}
75%  {top:200px;}
100% {top:0px;}
}

@-webkit-keyframes mymove /* Safari 和 Chrome */
{
0%   {top:0px;}
25%  {top:200px;}
50%  {top:100px;}
75%  {top:200px;}
100% {top:0px;}
}

@-o-keyframes mymove /* Opera */
{
0%   {top:0px;}
25%  {top:200px;}
50%  {top:100px;}
75%  {top:200px;}
100% {top:0px;}
}

animation-name

animation-name 属性为 @keyframes 动画规定名称。

注释:请始终规定 animation-duration 属性,否则时长为 0,就不会播放动画了。

animation-name: keyframename|none;

animation-duration

animation-duration 属性定义动画完成一个周期所需要的时间,以秒或毫秒计。

animation-duration: time;

animation-timing-function

animation-timing-function 规定动画的速度曲线。

速度曲线定义动画从一套 CSS 样式变为另一套所用的时间。

速度曲线用于使变化更为平滑。

animation-timing-function: value;

animation-timing-function 使用名为三次贝塞尔(Cubic Bezier)函数的数学函数,来生成速度曲线。您能够在该函数中使用自己的值,也可以预定义的值:

描述测试
linear动画从头到尾的速度是相同的。测试
ease默认。动画以低速开始,然后加快,在结束前变慢。测试
ease-in动画以低速开始。测试
ease-out动画以低速结束。测试
ease-in-out动画以低速开始和结束。测试
cubic-bezier(n,n,n,n)在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

提示:请试着在下面的“亲自试一试”功能中使用不同的值。

animation-delay

animation-delay 属性定义动画何时开始。

animation-delay 值以秒或毫秒计。

提示:允许负值,-2s 使动画马上开始,但跳过 2 秒进入动画。

animation-delay: time;

animation-iteration-count

animation-iteration-count 属性定义动画的播放次数。

animation-iteration-count: n|infinite;
描述测试
n定义动画播放次数的数值。测试
infinite规定动画应该无限次播放。测试

animation-direction

animation-direction 属性定义是否应该轮流反向播放动画。

如果 animation-direction 值是 "alternate",则动画会在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)向后播放。

注释:如果把动画设置为只播放一次,则该属性没有效果。

animation-direction: normal|alternate;
描述测试
normal默认值。动画应该正常播放。测试
alternate动画应该轮流反向播放。测试

animation-play-state

animation-play-state 属性规定动画正在运行还是暂停。

注释:您可以在 JavaScript 中使用该属性,这样就能在播放过程中暂停动画。

animation-play-state: paused|running;
描述测试
paused规定动画已暂停。测试
running规定动画正在播放。测试

animation-fill-mode

animation-fill-mode 属性规定动画在播放之前或之后,其动画效果是否可见。

注释:其属性值是由逗号分隔的一个或多个填充模式关键词。

animation-fill-mode : none | forwards | backwards | both;
描述
none不改变默认行为。
forwards当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
backwards在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
both向前和向后填充模式都被应用。