CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript。CSS3动画的属性主要分为三类:transform、transition以及animation。

 

transform

rotate

设置元素顺时针旋转的角度,用法是:

transform: rotate(x);

参数x必须是以deg结尾的角度数或0,可为负数表示反向。

scale

设置元素放大或缩小的倍数,用法包括:

transform: scale(a);                  元素x和y方向均缩放a倍

transform: scale(a, b);              元素x方向缩放a倍,y方向缩放b倍

transform: scaleX(a);                元素x方向缩放a倍,y方向不变

transform: scaleY(b);                元素y方向缩放b倍,x方向不变

translate

设置元素的位移,用法为:

transform: translate(a, b);                元素x方向位移a,y方向位移b

transform: translateX(a);                  元素x方向位移a,y方向不变

transform: translateY(b);                  元素y方向位移b,x方向不变

skew

设置元素倾斜的角度,用法包括:

transform: skew(a, b);              元素x方向逆时针倾斜角度a,y方向顺时针倾斜角度b

transform: skewX(a);                元素x方向逆时针倾斜角度a,y方向不变

transform: skewY(b);                元素y方向顺时针倾斜角度b,想方向不变

以上的参数均必须是以deg结尾的角度数或0,可为负数表示反向。

matrix

设置元素的变形矩阵,因为矩阵变形过于复杂,暂略。

origin

设置元素的悬挂点,用法包括:

transform-origin: a b;                元素的悬挂点为(a, b)

元素的悬挂点即为它旋转和倾斜时的中心点。取值中的a、b可以是长度值、以%结尾的百分比或者left、top、right、bottom四个值。

transition

transition-property

指定transition效果作用的CSS属性,其值是CSS属性名。

transition-duration

动画效果持续的时间,其值为以s结尾的秒数。

transition-timing-function

指定元素状态的变化速率函数,其取值基于贝赛尔曲线函数,详情如下所示:

transition-delay

动画效果推迟开始执行的时间,其值为以s结尾的秒数。

CSS3动画的生命周期如下图所示,从中可以清楚的看出duration和delay之间的关系:

animation

CSS3中真正的动画属性是animation,而前面的transform和transition都只是对DOM元素的变形或者是状态的过渡。实际上,CSS3所支持的动画效果只是填充动画,也就是说先设定整个动画生命周期中的几个关键状态(key  frame,关键帧),然后动画将自行计算并模拟关键帧之间的过渡。那么在设置animation的属性之前就必须先设定好关键帧了。

关键帧@keyframes的语法结构如下:

@keyframesNAME {

         a% {

        

         }

         b% {

                 

         }

         ...

}

NAME表示动画的名字;a%、b%表示以百分号结尾的百分数,用于设定该关键帧在动画生命周期中的位置;百分数后面的{ } 中则需要写成该关键帧状态下CSS属性的值。另外,如果同一个百分数值在@keyframes中出现多次,那么后出现的将覆盖先出现的;并且关键帧在@keyframes中时无序的。

设置完关键帧后就可以继续设定animation了。

animation-name

指定选用的动画的名字,即keyframes中的NAME。

animation-duration

同transition-duration。

animation-timing-function

同transition-timing-function。

animation-delay

同transition-delay。

animation-iteration-count

设定动画执行的次数,其值可以是数字也可以是infinite(循环执行)。

animation-direction

设定动画执行的方向,其值可以是normal(正常顺序播放)或alternate(反向播放)。

前缀

因为CSS3还没有正式发布,所以各种浏览器对它的支持也不尽相同。所以在设置CSS3属性(包括@开头的新属性)的时候通常需要对其添加浏览器标识的前缀,如-webkit- 表示Webkit内核的浏览器Chrome和Safari,-moz- 表示Fire Fox,-o- 表示Opera。无视IE吧,在IE上的实现通常还是要用到滤镜,而不是CSS3。

实例

下面的代码模拟了上述大部分的CSS3动画属性,由于只使用了–webkit- 前缀,所以只能在Chrome或Safari下正常运行。

HTML代码:

[html] view plain copy

1.  >

2.  <</span>html xmlns="http://www.w3.org/1999/xhtml">  

3.  <</span>head>  

4.  <</span>meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

5.  <</span>title>CSS3动画</</span>title>  

6.  <</span>link type="text/css" rel="stylesheet" href="animation.css" />  

7.  </</span>head>  

8.

9.  <</span>body>  

10. <</span>div class="rotate">rotate</</span>div>  

11. <</span>div class="scale">scale</</span>div>  

12. <</span>div class="translate">translate</</span>div>  

13. <</span>div class="skew">skew</</span>div>  

14. <</span>div class="origin">origin</</span>div>  

15. <</span>div class="single">single property</</span>div>  

16. <</span>div class="whole">whole property</</span>div>  

17. <</span>div class="resume">change & resume</</span>div>  

18. <</span>div class="animation">animation</</span>div>  

19. </</span>body>  

20. </</span>html>   

CSS代码:

animation.css

[css] view plain copy

1.  div {

2.      width: 80px;

3.      height: 30px;

4.      line-height: 30px;

5.      text-align: center;

6.      background: #06F;

7.      color: #fff;

8.      font-family: Arial, Helvetica, sans-serif;

9.      -webkit-border-radius: 10px;

10.     margin: 5px;

11. }

12.

13. .rotate {

14.     -webkit-transform: rotate(0deg);

15. }

16.

17. .rotate:hover {

18.     -webkit-transform: rotate(90deg);

19. }

20.

21. .scale {

22.     -webkit-transform: scale(1);

23. }

24.

25. .scale:hover {

26.     -webkit-transform: scale(1.5);

27. }

28.

29. .translate {

30.     -webkit-transform: translate(0px, 0px);

31. }

32.

33. .translate:hover {

34.     -webkit-transform: translate(50px, 50px);

35. }

36.

37. .skew {

38.     -webkit-transform: skew(0);

39. }

40.

41. .skew:hover {

42.     -webkit-transform: skewY(20deg);

43. }

44.

45. .origin {

46.     -webkit-transform-origin: top left;

47.     -webkit-transform: rotate(0);

48. }

49.

50. .origin:hover {

51.     -webkit-transform: rotate(45deg);

52. }

53.

54. .single {

55.     width: 150px;

56. }

57.

58. .single:hover {

59.     background: #f00;

60.     width: 200px;

61.     height: 100px;

62.     line-height: 100px;

63.     -webkit-transition-property: background;

64.     -webkit-transition-duration: 2s;

65. }

66.

67. .whole {

68.     width: 150px;

69. }

70.

71. .whole:hover {

72.     width: 200px;

73.     height: 100px;

74.     line-height: 100px;

75.     background: #f00;

76.     -webkit-transition-duration: 2s;

77. }

78.

79. .resume {

80.     width: 150px;

81.     -webkit-transition-duration: 2s;

82. }

83.

84. .resume:hover {

85.     width: 200px;

86.     height: 100px;

87.     line-height: 100px;

88.     background: #f00;

89.     -webkit-transition-duration: 2s;

90. }

91.

92. .animation:hover {

93.     -webkit-animation-name: anim;

94.     -webkit-animation-duration: 2s;

95.     -webkit-animation-timing-function: linear;

96.     -webkit-animation-direction: alternate;

97.     -webkit-animation-iteration-count: infinite;

98. }

99.

100. @-webkit-keyframes anim {

101.     0% {

102.         width: 80px;

103.         height: 30px;

104.         line-height: 30px;

105.         background: #06F;

106.     }

107.     50% {

108.         width: 140px;

109.         height: 65px;

110.         line-height: 65px;

111.         background: #360;

112.     }

113.     100% {

114.         width: 200px;

115.         height: 100px;

116.         line-height: 100px;

117.         background: #f00;

118.     }

119. }

CSS动画总结效果的更多相关文章

  1. Jquery 动态交换两个div位置并添加Css动画效果

    前端网页开发中我们经常会遇到需要动态置换两个DIV元素的位置,常见的思路大多是不考虑原始位置,直接采用append或者appendTo方式将两元素进行添加,该法未考虑原始位置,仅会添加为元素的最后一子 ...

  2. 15个来自 CodePen 的酷炫 CSS 动画效果【下篇】

    CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...

  3. 赞!15个来自 CodePen 的酷炫 CSS 动画效果

    CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...

  4. CSS动画效果的回调

    用纯JS实现动画效果代码量大,计算复杂.因此现在前端页面的动画效果一般都采用CSS来实现. CSS动画实现简单高效,但是在处理动画,控制动画过程上却缺少一些有效手段. 例如我们想在动画效果完成时调用回 ...

  5. CSS动画总结与呼吸灯效果

    首先,先介绍一下主要用到的css属性:animation,text-shadow. text-shadow就不再介绍了,上一篇已经详细介绍了用法.这里先介绍一下animation属性. 1.anima ...

  6. CSS动画效果之animation

    Y(^o^)Y css动画大乱弹之animation. 概述 什么是animation呢?在回答这个问题之前,先要说明什么叫做@keyframe(关键帧).@keyframe算是一个动画模板.在其中, ...

  7. CSS动画效果

    CSS变形效果 Transform translate:平移 translate(x,y) translateX(x) translateY(y)相对于元素原始位置平移. scale:缩放 大于1放大 ...

  8. 用 CSS 实现酷炫的动画充电效果

    巧用 CSS 实现酷炫的充电动画 循序渐进,看看只使用 CSS ,可以鼓捣出什么样的充电动画效果. 画个电池 当然,电池充电,首先得用 CSS 画一个电池,这个不难,随便整一个: 欧了,勉强就是它了. ...

  9. web前端学习(三)css学习笔记部分(5)-- CSS动画--页面特效、HTML与CSS3简单页面效果实例

    CSS动画--页面特效部分内容目前仅仅观看了解内容,记录简单笔记,之后工作了进行内容的补充 7.  CSS动画--页面特效 7.1  2D.3D转换 7.1.1  通过CSS3转换,我们能够对元素进行 ...

随机推荐

  1. linux centOs中安装好数据库,客户端用plsql连接oracle

    原创作品,转载请在文章显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10030375.html 首先,回顾上篇 CenOs7安装oracle图文详细过 ...

  2. ES6学习笔记(二)-字符串的扩展

    一.字符的 Unicode 表示法 JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点. 表示法只限于码点在\u0000~\uFFFF之间的字符, ...

  3. CSS属性之margin

    0.对自身可视宽度的影响 1>改变处于标准文档流中,未设置width值的block元素的可视宽度 在标准文档流中,对于没有设置宽度的block元素,当其具有内容或者设置高度后,其自身宽度为父元素 ...

  4. html5 表单 填表 select 下拉 textarea多行文本 output Js计算结果

    <select>     下拉 <select>下有很多属性 name        其实有name就有value了,因为button提交的都是? name=value的格式, ...

  5. 浏览器组成、线程及event loop

    浏览器组成 User interface: a. Every part of the browser display, except the window. b. The address bar, b ...

  6. WinForm实现Rabbitmq官网6个案例-Work Queues

    代码: namespace RabbitMQDemo { public partial class WorkQueues : Form { private string queueName = &qu ...

  7. log4net.dll添加报错

    描述: 新建项目Log4Net类库项目,添加log4net.dll,封装Log类对日志进行操作 新建webForm项目添加Log4Net类库生成的dll生成日志,页面报错,未能加载文件或程序集log4 ...

  8. LintCode2016年8月8日算法比赛----中序遍历和后序遍历构造二叉树

    中序遍历和后序遍历构造二叉树 题目描述 根据中序遍历和后序遍历构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下 ...

  9. 插入外置网卡端口顺序混乱--linux系统

    本文皆是作者工作学习中的理解或感悟,欢迎大家提出问题,一起讨论!! 一.问题提出 一般的主板上都带有两个网卡接口,linux系统启动后一般命名为eth0,eth1,当然如果我们不对eth0与eth1进 ...

  10. sudo的安装

    关于mini版的centos7的是不能直接sudo命令的 下面我来说一下怎么让sudo命令生效 第一步 先切换到root用户: su -    第二步 visudo 给相应用户分配sudo的权限 第三 ...