animation是css3的另一个重要的模块,它成型比transition晚,吸取了Flash的关键帧的理念,实用性高。

animation是一个复合样式,它可以细分为8个更细的样式。

(1)animation-name

为@keyframes动画(以@keyframes开头的样式规则,我们称为关键帧样式规则)规定名称。默认为none,规定无动画效果。

(2)animation-duration

动画持续的时间,单位为s或ms。默认为0,规定没有动画效果。

(3)animation-timing-function

缓动公式,默认为ease。

(4)animation-delay

动画延迟多久,才开始执行。默认为0.

(5)animation-iteration-count

动画播放的次数,值可以为正整数或infinite(无限次播放)。默认只执行一次。这是一个很好的设计,不像transition,只要改变指定样式值,就会触发transition的动画执行。

(6)animation-direction

动画执行的方向,有4个值:normal,alternate,reverse,alternate-reverse。默认值为normal。normal就是动画正常播放,也就是说从第一帧(@keyframes中0%或from定义的样式,不写,浏览器会自动补上)开始播放。alternate,代表动画会在奇数次数(1、3、5 等等)正常播放,而在偶数次数(2、4、6 等等)向后往前播放。显然这个值在animation-iteration-count大于1时才有效。reverse和alternate-reverse在最早制定的规范中没有,因此有兼容性问题,这里不讲。

(7)animation-fill-mode

此属性规定动画在播放之前或之后,其动画效果是否可见(也就是说规定动画时间之外的状态)。默认值为none。其属性值是由逗号分隔的一个或多个填充模式关键词。

none :不改变默认行为。默认行为是不设置对象动画之外的状态。
forwards: 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)。
backwards: 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)。
both: 向前和向后填充模式都被应用。也就是说上面两个状态都设置。

这4个值的设置效果,大家可以去看一下这个例子:http://www.w3chtml.com/css3/properties/animation/animation-fill-mode.html。none和backwards的状态是一样的,forwards和both的状态是一样的。

(8)animation-play-state

用于暂停或继续此动画。默认值:running。

paused 规定动画已暂停。 
running 规定动画正在播放。

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

前面6个可以连写在一起。比如:animation:name 2s ease 3s infinite alternate

我们来举个例子说下animation如何使用的:

<style>

  #test{

    width:100px;height:100px;background:red;

    -webkit-animation: cicle 1s infinite alternate;

    animation: cicle 1s infinite alternate;

  }

  @keyframes circle {

    100%{

      border-radius:50px;

    }

  } 

  @-webkit-keyframes circle {

    100%{

      -webkit-border-radius:50px;   //设置test元素的四个角,为椭圆(当值为width的一半时,就会变成圆)。

    }

  }

</style>

上面的这个例子,会将test元素不断的从一个正方形变成一个圆形,然后圆形再变成正方形,周而复始,可见用css3实现一个动画是如此的方便。

此外,animation还配套了3种事件,分别用于开始时(animationstart),结束时(animationend),重复播放时(animationiteration)。当然这些事件名不能直接使用,需要加上私有前缀。那如何来获取这个名字呢?其实跟transition理念一样。

var getAnimationEventName = function(){

  var obj = {

    "AnimationEvent":"animationend",

    "WebKitAnimationEvent":"webkitAnimationEnd"

  };

  ......    //下面跟transition那一课的代码一样

}

下一课,将使用css3 animation做一个动画引擎。使用css3做动画引擎,在移动端很有优势,但是在pc端,因为animation在IE10才支持,所以就不能使用css3 animation,这时我们就需要退回基于javascript的动画引擎。下一课难度很大,请做好准备。

加油!

第四十一课:CSS3 animation详解的更多相关文章

  1. 转:【译】CSS3:clip-path详解

    我的一个学生,Heather Banks,想要实现他在Squarespace看到的一个效果: 根据她的以往经验,这个网站的HTML和CSS是完全在她的能力范围以内,于是我帮助她完成了这个效果.显示na ...

  2. CSS3过渡详解-遁地龙卷风

    第二版 0.环境准备 (1)过渡需要浏览器的支持,使用这些属性要加上浏览器厂商的前缀,我用的chrome49已经不需要前缀了, -o- Opera -webkit- Safari.Chrome -mo ...

  3. css3学习--css3动画详解一(animation属性)

    ***介绍的属性并不完全,写的都是我认为容易混淆的难点属性,所以属性会在最后综合案例展示~ 一.Keyframes介绍: Keyframes被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主 ...

  4. 第四十课:CSS3 transition详解

    W3C中对transition是这样描述的:允许css的属性值在一定的时间内平滑的过渡,也就是说,以动画的效果改变css的属性值. transition主要包含4个属性值:transition-pro ...

  5. CSS3动画详解(超详细)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 本文主要内容: 过渡:transition 2D 转换 trans ...

  6. CSS3动画详解(结合实例)

    一.使用CSS3动画代替JS动画 JS动画频繁操作DOM导致效率非常低 在频繁的操作DOM和CSS时,浏览器会不停的执行重排(reflow)和重绘(repaint) 可以避免占用JS主线程 这边就不细 ...

  7. CSS3动画详解(图文教程)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 本文主要内容: 过渡:transition 2D 转换 trans ...

  8. css3动画详解

    一.Keyframes介绍: Keyframes被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主要以“@keyframes”开头,后面紧跟着是动画名称加上一对花括号“{…}”,括号中就是一 ...

  9. CSS3 HSL()详解:

    这是CSS3新增的颜色表示模式.在CSS2中,只有RGB(red.green和blue的缩写)和十六进制两种颜色模式.为了能够支持颜色的透明度,CSS3新增了RGBA(A是Alpha缩写).但是无论是 ...

随机推荐

  1. mybatis的#{}和${}的区别以及order by注入问题

    前言略,直奔主题.. #{}相当于jdbc中的preparedstatement ${}是输出变量的值 你可能说不明所以,不要紧我们看2段代码: String sql = "select * ...

  2. 【MVC 4】8.SportsSore:管理

    作者:[美]Adam Freeman      来源:<精通ASP.NET MVC 4> 本文将继续构建 SportsStore 应用程序,为网站管理员提供一个管理产品分类的方法.本文将添 ...

  3. 半径无关单核单线程最快速高斯模糊实现(附完整C代码)

    之前,俺也发过不少快速高斯模糊算法. 俺一般认为,只要处理一千六百万像素彩色图片,在2.2GHz的CPU上单核单线程超过1秒的算法,都是不快的. 之前发的几个算法,在俺2.2GHz的CPU上耗时都会超 ...

  4. codeforces 709A A. Juicer(水题)

    题目链接: A. Juicer 题意: 给出n个橘子,汁漫出来了就倒出来,反正就是要求要倒几次; 思路: AC代码: #include <iostream> #include <cs ...

  5. python刷题专用函数。。

    无它,非bin()莫属. bin(x) Convert an integer number to a binary string. The result is a valid Python expre ...

  6. HDU 1556 Color the ball

    这题用线段树的话简直就是一个水题..不过刚学树状数组,要用一下. 题意:每次给你a,b,表明a~b之间涂色,然后最后一次输出每个气球被涂色的次数. 要用树状数组就要考虑怎么转化为前缀和问题,这题可以这 ...

  7. Treap(树堆):随机平衡二叉树实现

    本文是根据郭家宝的文章<Treap的原理及实现>写的. #include<stdio.h> #include<string.h> #include<stdli ...

  8. 利用OpacityMask制作打洞效果

    起因 项目上存在一个连线功能,在设计的原型中,在连线中间文字上下各有15像素的空白.接手的同事觉得没思路,问我能不能在不影响连线后面的背景情况下解决该问题.我就抽了点时间给他写了个Demo.回家后趁热 ...

  9. TestLink学习六:TestLink1.9.13工作使用小结

    Testlink是一款强大的用例追踪和管理工具.测试管理注重的实际上就是一个流程. 1.默认当测试用例同名时,就会有提示.(以前版本需要修改配置) 2.测试用例序号:(缺点) 1)删除一个测试用例之后 ...

  10. ArcGis 获取地理、平面坐标系

                                         ESRI.ArcGIS.Geometry.ISpatialReference spatialReference = spati ...