WebKit CSS3 动画基础
前几天在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> ] [ '
,' <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.css88.com/archives/2301]
?