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. jquery获取哪一个下拉框被选中

    var val = $("select[name='type_irb'] option:selected").val();

  2. 简单Json序列化和反序列化

    序列化是什么: 序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得.序列化分为两大部分:序列化和反序列化.序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络 ...

  3. Working C# code for MySql5.5 Stored Procedures IN parameters

    MySQL5.5存储过程: #插入一条 涂聚文 DELIMITER $$ DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindList` ...

  4. js类的笔记

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. JavaScript周报#183

    This week’s JavaScript news Read this issue on the Web | Issue Archive JavaScript Weekly Issue 183Ma ...

  6. PHP之httpRequest

    <?php /** * Respose A Http Request * * @param string $url * @param array $post * @param string $m ...

  7. drupal7 profile2模块获取个人信息

    一.问题背景: 用profile2模块,扩展个人信息,增加了“手机号”等信息,一些地方想要获取当前用户的手机号 二.解决办法: 用profile2自带的方法:profile2_load_by_user ...

  8. 使用iview时,页面没了滚动条

    场景:页面中有一个确认按钮,保存后弹框预览在点保存按钮,实现数据提交.提交后回到数据列表页,用this.$router.push('list'),返回后页面无法滚动了. 原因:排查后发现弹框时在bod ...

  9. Ubuntu增加一个用户并给普通用户赋予root权限的方法

    1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户#passwd tommy   //修改密码Changing pass ...

  10. html+css 百度首页练习

    这几天看完了<css权威指南>,写了个百度页面,不带js的纯静态,主要目的就是掌握页面布局,字体颜色之类的没有深究. 写完了觉得很简单,毕竟一开始觉得只要模仿的像就行,但是缩小了浏览器窗口 ...