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. zoj 1037 最短路

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37 找规律,水题 #include<iostream> #inclu ...

  2. Tomcat配置连接c3p0连接池

    一.Tomcat配置JNDI资源 JNDI(Java Naming and Directory Interface),Java 命名和目录接口. JNDI的作用就是:在服务器上配置资源,然后通过统一的 ...

  3. 关于 Table 表格那些三两事儿

    引言 实现下列表格样式,嵌套与form表单中提交信息,为了让自己的表格可以“ 随心所欲 ” 变换自己的形式,需要两个重要的td 属性colspan 列合并 以及 rowspan 行合并 来实现,表格宽 ...

  4. react项目 路径优化

  5. 自定义动画(仿Win10加载动画)

    一.源代码 源代码及demo 二.背景 先看看Win10的加载动画(找了很久才找到): CPA推广甲爪广告联盟满30日结 [点击进入] 甲爪广告联盟,提供各类高单价CPA广告 单价高 收益好 日付广告 ...

  6. c# 设计模式 之:抽象工厂

    1.作用:抽象工厂的目的就是生产[产品族],之前讲的“工厂模式”的每一个factory只造一种产品,抽象工厂让一个factory造多个产品. uml类图: 代码实现: 抽象工厂代码: namespac ...

  7. 如何激活 Trend Micro Deep Security Agent

    Deep Security 即服务包括反恶意软件保护.防火墙.入侵防御系统和完整性监视.Trend Micro Deep Security Agent (DSA) 可以配合 Deep Security ...

  8. minimal sparse ruler problem 最少尺子刻度问题

    一个长度13的尺子,如果在1位置刻点可以量出1和12,13三种刻度.那么至少刻几个点,可以直接量出1-13所有的长度,分别刻在哪几个位置? 注:必须是直接量.即在尺子上能找出一个1-13任意的整数长度 ...

  9. Oracle案例09——ORA-12154: TNS:could not resolve the connect identifier specified

    DG处理的问题还是蛮多的,但这次遇到一个比较奇葩的事情,表面配置.网络都没啥问题,但主备的同步始终有问题,经过多次调整参数.重新部署问题依旧,最终还是求助mos问题得以解决,现将处理过程记录如下: 一 ...

  10. kotlin lateinit

    声明变量: private var a: String? = "" 或者:private lateinit var a: String // 使用前先初始化