css3 动画属性animation参数详解

发表于2017-03-06 17:41:07

最近又要做一个旋转图片的效果,之前做旋转是用的animation配合transform做的,但是用起来效果没有animation要好。

首先直接上代码

<div class="box"></div>
.box{
  animation:rotate infinite linear 5s;
  -webkit-animation:rotate infinite linear 5s;
  -moz-animation:rotate infinite linear 5s;
}
@-webkit-keyframes rotate{
  from{-webkit-transform:rotate(0deg)}
  to{-webkit-transform:rotate(360deg)}
}
@-moz-keyframes rotate{
  from{-moz-transform:rotate(0deg)}
  to{-moz-transform:rotate(360deg)}
}
@-ms-keyframes rotate{
  from{-ms-transform:rotate(0deg)}
  to{-ms-transform:rotate(360deg)}
}
@-o-keyframes rotate{
  from{-o-transform:rotate(0deg)}
  to{-o-transform:rotate(360deg)}
}

这是最简单的div一直旋转的代码,rotate是自己定义的动画函数名字,infinite是动画不停的执行,永久执行下去,如果想控制次数直接写 数字 例如 4 就行,linear是线性变化会有个过渡的效果,5S是动画持续时间。

值得注意的是,我们在定义动画时,一定要写4个带上浏览器前缀,不要觉得代码过多,毕竟很多低版本浏览器并不支持css3属性,而且这也是w3c推荐的写法。


其实animation一共是有7个参数的。

animation: name keeping-time animate-function delay times iteration final;

第一个参数:name (animation-name):

动画的名字,即设定动画过程的名字,CSS3采用“关键帧 keyframes”来定义动画,方式形如:

@-webkit-keyframes name{
    0%{
        opacity: 0;
    }
    100%{
        opacity: 1;
    }
 }

前缀-webkit-表示webkit内核浏览器(Chrome、Safari和变心的opera),以上代码定义了一个动画,名叫name,效果是使透明度从0变化到1,0%~100%为整个过程,当然也可以定义多段如:0%~20~50%~100%。


第二个参数:keeping-time (animation-duration):

整个动画的持续时间,必须带上时间单位,s或者ms均可;


第三个参数:animate-function (animation-timing-function):

运动方式(动画方式)的贝赛尔曲线,可取值为:ease、ease-in、ease-out、linear、ease-in-out、cubic-bezier(num1,num2,num3,num4)。

linear是线性变化 ,(step-end则是无线性变化,直接输出结果),一般最常用的是linear会有过渡的效果。


第四个参数:delay (animation-delay):

动画延迟执行的时间,单位也是s或者ms,值得注意的是,即使延迟时间为0,也必须加上时间单位,如果写成直接写成0,在Chrome和Safari(webkit)下是没问题的,但是在FF(gecko)下无效。


第五个参数:times (animation-iteration-count):

动画循环执行的次数,无单位,infinite为无限循环。


第六个参数:iteration (animation-direction):

如果动画循环,循环的方式是:alternate(偶数次向前播放,奇数次向后播放)、normal(每次都向前播放)。


第七个参数:final (animation-fill-mode):

动画的最后(达到100%)时的状态,取值有:backward(回到初始状态)、forwards(停在最终状态)、none、both。

每个参数也可以单独写,最后用的时候记得加浏览器前缀:

.classname{
    -webkit-animation:name 6s linear 0ms infinite normal forwards;
    -moz-animation:name 6s linear 0ms infinite normal forwards;
    -o-animation:name 6s linear 0ms infinite normal forwards;
    animation:name 6s linear 0ms infinite normal forwards;}

将不带前缀的写在最后面好处是等到animation被所有浏览器认可,可以摈弃前缀的时候可以覆盖前面的样式。


参数介绍是转载的,非常感谢这个作者,写的很好很详细,而且通俗易懂,附上原文链接CSS3 动画属性 animation 的基本用法

评论(0)

请先登录后再评论,如果没有账号请先注册

发表评论