WebKit CSS3 动画基础

时间:2010年05月19日作者:愚人码头查看次数:15,110 views评论次数:11

前几天在Qzone上看到css3动画,非常神奇,所以也学习了一下。首先看看效果http://www.css88.com/demo/css3_Animation/

很悲剧的是css3动画现在只有WebKit内核的浏览器(Safari和Chrome)支持,虽然应用还不是时候,但是效果却不可低估。

在哪里定义动画效果?

css3动画一般通过鼠标事件或者说状态定义动画,通常我们可以用CSS中伪类js中的鼠标事件来定义。

动态伪类 起作用的元素 描述
:link 只有链接 未访问的链接
:visited 只有链接 访问过的链接
:hover 所有元素 鼠标经过元素
:active 所有元素 鼠标点击元素
:focus 所有可被选中的元素 元素被选中

js的事件也可以,比如click,focus,mousemove,mouseover,mouseout等等

transition的基本语法:

css3动画通过transition属性和其他css属性(颜色,宽高,变形,位置等等)配合来实现。

transition的语法:

transition : [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'> [, [<'transition-property'> || <'transition-duration'> || <'transition-timing-function'> || <'transition-delay'>]]*

当然这是简写,我们也可以完整的写:

transition-property : none | all | [ <IDENT> ] [ '

1
,

' <IDENT> ]*;

transition-duration : <time> [, <time>]*

transition-timing-function : ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>) [, ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>)]*

transition-delay : <time> [, <time>]*

要变化的属性

transition-property:要变化的属性,比如元素变宽则是width,文字颜色要变色这是color;W3C给出了一个可变换属性的列表

CSS属性 改变的对象
background-color 色彩
background-image 只是渐变
background-position 百分比,长度
border-bottom-color 色彩
border-bottom-width 长度
border-color 色彩
border-left-color 色彩
border-left-width 长度
border-right-color 色彩
border-right-width 长度
border-spacing 长度
border-top-color 色彩
border-top-width 长度
border-width 长度
bottom 百分比,长度
color 色彩
crop 百分比
font-size 百分比,长度
font-weight 数字
grid-* 数量
height 百分比,长度
left 百分比,长度
letter-spacing 长度
line-height 百分比,长度,数字
margin-bottom 长度
margin-left 长度
margin-right 长度
margin-top 长度
max-height 百分比,长度
max-width 百分比,长度
min-height 百分比,长度
min-width 百分比,长度
opacity 数字
outline-color 色彩
outline-offset 整数
outline-width 长度
padding-bottom 长度
padding-left 长度
padding-right 长度
padding-top 长度
right 百分比,长度
text-indent 百分比,长度
text-shadow 阴影
top 百分比,长度
vertical-align 百分比,长度,关键词
visibility 可见性
width 百分比,长度
word-spacing 百分比,长度
z-index 正整数
zoom 数字

该取值还有个强大的“all”取值,表示上表所有属性;

除了以上属性外,当然还有css3中大放异彩的css3变形,比如放大缩小,旋转斜切,渐变等等。

动画时间

transition-duration :动画执行的时间,以秒为单位,比如0.1秒可以写成”0.1s”或者”.1s”,注意后面有个“s”单位。

动画执行的计算方式

transition-timing-function :动画执行的计算方式,这里时间函数是令人崩溃的贝塞尔曲线幸好css3提过了几个取值:

ease:逐渐慢下来,函数等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0).

linear:线性过度,函数等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0).

ease-in:由慢到快,函数等同于贝塞尔曲线(0.42, 0, 1.0, 1.0).

ease-out:由快到慢, 函数等同于贝塞尔曲线(0, 0, 0.58, 1.0).

ease-in-out:由慢到快在到慢, 函数等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)

cubic-bezier:特定的cubic-bezier曲线。 (x1, y1, x2, y2)四个值特定于曲线上点P1和点P2。所有值需在[0, 1]区域内,否则无效。

动画延迟

transition-delay:在动作和变换开始之间等待多久,通常用秒来表示(比如, .1s)。如果你不想延迟,该值可省略。

重叠动画

经常会碰到同一元素会有多个动画同时执行的时侯,比如文字颜色和背景同时变化:

-webkit-transition: color .25s linear , background-color 1s linear;

和transform(变形)结合的一些动画

这时候transition-property建议取值为“all”;关于css3 transform(变形)属性请查看

http://www.css88.com/archives/2168

比如放大缩小:

#blah { -webkit-transition: all .3s ease-in-out; }

#blah:hover { -webkit-transform: scale(1.5); }

旋转:

.arrow { -webkit-transition: all 1s ease-in-out;}

.arrow:hover  {-webkit-transform: rotate(720deg);}

做了几个案例,demo:http://www.css88.com/demo/css3_Animation/

还可以看老外的demo:http://webdeveloperjuice.com/demos/css/css3effects.html

=================

参考阅读:

http://www.qianduan.net/css-transitions-101.html

http://www.zhangxinxu.com/wordpress/?p=498

http://fis.io/css-3-hover-animations.html

声明: 本文采用 BY-NC-SA 协议进行授权 | WEB前端开发
转载请注明转自《WebKit CSS3 动画基础

如果你读了我的文章,觉得有帮助: 说明
标签:,,分类:html5+css3
10条评论
  1. crossyou留言于:2010年05月19日22:18

    做个沙发。

    [回复]

  2. Jayuh留言于:2010年05月20日11:16

    回复一个,慢慢看。
    JS不会,CSS还是能看懂的,这篇文章我一定要坚持看完。
    看完后再来谈一下心得体会!

    [回复]

  3. LOO2K留言于:2010年05月20日12:16

    效果真的很赞,但是要等到浏览器都支持跟成为标准还有很长的一段时间吧。

    [回复]

  4. 无聊留言于:2010年05月20日19:30

    呵呵,强悍。。

    [回复]

  5. windlibra留言于:2010年05月26日16:37

    Opera对这两个也是支持的 不过需要加-o-标记
    transform的话Firefox支持吧
    只有webkit支持的应该是animation和Transforms 3D吧

    [回复]

  6. idamag留言于:2010年06月11日18:02

    很不错~!

    [回复]

  7. Jason留言于:2010年10月13日09:47

    嗯。学习了~~~

    [回复]

  8. HOUOOP留言于:2010年10月21日12:23

    我的网站是关于HTML5技术的,希望能交换友情链,我的邮箱是Rnkeer@gmail.com,有意愿请告知,谢谢。

    [回复]

  9. 幽灵小麦留言于:2011年06月22日15:09

    我是带着求 -webkit-transition: color .25s linear 的解释来找到这篇文章的,虽然很多属性,但多数用到的时候才会查询。 终究能找到点有用的吧

    [回复]

  10. bamboo留言于:2011年07月26日14:56

    最近正在学习相关的css3动画方面的知识,非常有帮助。国外有个css3动画的教程,有兴趣的可以看看,有个压缩包文件可下载,自己调节各个参数查看效果。进步飞快哦……
    http://abduzeedo.com/tutorial-case-study-html5-css3

    [回复]

发表评论

*

*