CSS3 Animation

来源:互联网 发布:能在mac上玩的网游 编辑:程序博客网 时间:2024/06/04 11:15

CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation;
在开始介绍Animation之前我们有必要先来了解一个特殊的东西,那就是”Keyframes”,我们把他叫做“关键帧”。
Keyframes具有其自己的语法规则,他的命名是由”@keyframes”开头,后面紧接着是这个“动画的名称”加上一对花括号“{}”,括号中就是一些不同时间段样式规则,有点像我们css的样式写法一样。对于一个”@keyframes”中的样式规则是由多个百分比构成的,如“0%”到”100%”之间,我们可以在这个规则中创建多个百分比,我们分别给每一个百分比中给需要有动画效果的元素加上不同的属性,从而让元素达到一种在不断变化的效果,比如说移动,改变元素颜色,位置,大小,形状等,不过有一点需要注意的是,我们可以使用“fromt”“to”来代表一个动画是从哪开始,到哪结束,也就是说这个 “from”就相当于”0%”而”to”相当于”100%”,值得一说的是,其中”0%”不能像别的属性取值一样把百分比符号省略,我们在这里必须加上百分符号(“%”)如果没有加上的话,我们这个keyframes是无效的,不起任何作用。因为keyframes的单位只接受百分比值。

语法:

@keyframes IDENT {     from {       Properties:Properties value;}Percentage {       Properties:Properties value;}to {       Properties:Properties value;}   }   或者全部写成百分比的形式:   @keyframes IDENT {      0% {         Properties:Properties value;}Percentage {         Properties:Properties value;}      100% {         Properties:Properties value;}    }

我们来看一个W3C官网的实例

  @-webkit-keyframes 'wobble' {     0% {        margin-left: 100px;background: green;}     40% {        margin-left: 150px;background: orange;}     60% {        margin-left: 75px;background: blue;}     100% {        margin-left: 100px;background: red;}  }

CSS3的animation类似于transition属性,他们都是随着时间改变元素的属性值。他们主要区别是transition需要触发一个事件(hover事件或click事件等)才会随时间改变其css属性;而animation在不需要触发任何事件的情况下也可以显式的随着时间变化来改变元素css的属性值,从而达到一种动画的效果。这样我们就可以直接在一个元素中调用animation的动画属性,基于这一点,css3的animation就需要明确的动画属性值,这也就是回到我们上面所说的,我们需要keyframes来定义不同时间的css属性值,达到元素在不同时间段变化的效果。

下面我们来看看怎么给一个元素调用animation属性:

 .demo1 {     width: 50px;     margin-left: 100px;     background: blue;     -webkit-animation-name:'wobble';/*动画属性名,也就是我们前面keyframes定义的动画名*/     -webkit-animation-duration: 10s;/*动画持续时间*/      -webkit-animation-timing-function: ease-in-out; /*动画频率,和transition-timing-function是一样的*/      -webkit-animation-delay: 2s;/*动画延迟时间*/      -webkit-animation-iteration-count: 10;/*定义循环资料,infinite为无限次*/      -webkit-animation-direction: alternate;/*定义动画方式*/  }

从上面的Demo中我们可以看出animation和transition一样有自己相对应的属性,那么在animation主要有以下几种:animation-name;animation-duration;animation-timing-function;animation-delay;animation-iteration-count;animation-direction;animation-play-state。下面我们分别来看看这几个属性的使用:
一、animation-name:用来定义一个动画的名称
二、animation-duration:用来指定元素播放动画所持续的时间长
三、animation-timing-function:指元素根据时间的推进来改变属性值的变换速率,说得简单点就是动画的播放方式。他和transition中的transition-timing-function一样,具有以下六种变换方式:ease;ease-in;ease-in-out;linear;cubic-bezier。
四、animation-delay:指定元素动画开始时间。取值为

综合取值说明:
这里写图片描述
兼容的浏览器

前面我也简单的提过,CSS3的animation到目前为止只支持webkit内核的浏览器,因为最早提出这个属性的就是safari公司,据说Firefox5.0+将支持Animation。如图所示
这里写图片描述

来源: http://www.w3cplus.com/content/css3-animation

0 0