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. C# 设计模式·创建型模式

    面试问到这个··答不出来就是没有架构能力···这里学习一下···面试的时候直接让我说出26种设计模式··当时就懵逼了··我记得好像之前看的时候是23种的 还有3个是啥的··· 这里先列出几种创建型模式 ...

  2. 在IIS中部署好WCF服务站点后,本机访问服务无问题,局域网中其他电脑访问不到

    1.问题描述 在IIS中部署好WCF服务站点后,本机访问服务无问题,局域网中其他电脑访问不到. 2.解决方法 (1)控制面板 -> Windows防火墙 -> 高级设置 (2)属性 (3) ...

  3. hashlib 文件校验,MD5动态加盐返回加密后字符

    hashlib 文件校验 # for循环校验 import hashlib def check_md5(file): ret = hashlib.md5() with open(file, mode= ...

  4. Angular中引入Bootstrap部分样式失效以及Jquery的$无法识别

    大多数同学在模仿慕课网的时候可能会遇到引入bootstrap和jquery样式部分失效以及$符号报错,这里为大家提供正确的解决方案. 可能大家在引入试过col-md之后觉得bootstrap是ok的, ...

  5. LOJ6066:「2017 山东一轮集训 Day3」第二题

    传送门 二分答案 \(k\),考虑如何 \(hash\) 使得做起来方便 把每个点挂在 \(k+1\) 级祖先上,考虑在祖先上删除 这道题巧妙在于其可以对于 \(dfs\) 序/括号序列 \(hash ...

  6. \n\r 转义字符

    转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将 ...

  7. JavaScript Standard Style

    这是 JavaScript standard 代码规范的全文. 掌握本规范的最好方法是安装并在自己的代码中使用它. https://github.com/standard/standard/blob/ ...

  8. (WCF) 利用WCF实现两个Process之间的通讯。

    目的: 实现两个独立的Process 之间的通讯. 实现思路: 建立一个WCF Service,然后将其Host到一个Console 程序中,然后在另外一个Console程序中引用WCF的Servic ...

  9. [算法练习]String to Integer (atoi)

    题目说明: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ...

  10. The pit of an if statement in Java

    package the.pit.of.an.ifstatement.injava; public class ThePitOfAnIfStatementInJava { public static v ...