css3应用:transition

Transition对应的CSS属性列表:

transition-property

  1. 指定当元素哪个属性改变时执行Transition效果,属性可以时以下属性:none、all以及其他可以触发浏览器reflow或repaint的属性。
  2. 当指定为none时,动画立即停止,当指定为all的时候,则当元素产生任何属性值变化时都将执行“转换”效果,比如大小改变。
  3. 初始默认值为all.

transition-duration

  1. 指定“转换”过程的时间,如:1s、none。
  2. 初始默认值为0.

transition-timing-function

    1. 指定“转换”过程中可用的效果,预设的有:ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(x1, y1, x2, y2),默认值时easy。
    2. cubic-bezier为通过贝塞尔曲线来计算“转换”过程中的属性值,如下曲线所示,通过改变P1(x1, y1)和P2(x2, y2)的坐标可以改变整个过程的Output Percentage。
    3. 初始默认值为default.

transition-delay

  1. 指定一个动画开始执行的时间,即当改变元素属性值后多长时间开始执行“转换效果”
  2. 初始默认值为0.

 

属性值连写(短属性)

 

  1. transition和background等CSS属性一样支持属性值连写,比如:-webkit-transition: width 1s easy-in-out;
  2. 需要值得注意的是,原则上所有属性值是不区分位置的,但是“时间属性值”有点不同,浏览器会根据先后顺序决定,第一个可以解析为时间的属性值将体现为transition-duration,第二个可以解析为时间的属性值将体现为transition-delay

 

浏览器支持状况?

 

  • Chrome 2+(-webkit-transition),Firefox3.7+(-moz-transition),Safari 3.1+(-webkit-transition),Opera 10.5+(-o-transition),其他浏览器暂不支持

ReflowRepaint

  • Transition执行过程中,同样会产生大量的Reflow和Repaint,不过不同的是,这些变化都有一定是按照CSS中定义的运作方式规律的进 行,所以浏览器可以预知整个过程的Reflow和Repaint过程,从而对其进行优化处理。(个人猜测,这需要查看webkit源码后再作结论)

 

正确理解Timing-function

 

  • 这是几个Timing-function曲线图:


这是几个默认timing-function的示例:(请在chrome浏览器下产看效果)

default »
linear »
ease-in »
ease-out »
ease-in-out »
cubic-bezier »

一次“转变”便是一次曲线过程

激发Transition的条件

  • 只要为元素指定任意一个以上的transition属性,元素在改变属性值的时候便可执行transition效果,并设其他属性值为初始值。

如果我们把下面的例子(transition:color 1s ease-in;),我们改变了字体颜色的持续时间为1秒)。请参阅下面的一些例子,可以应用到你自己的项目中使用。
css3颜色过渡范例

.my_class {
transition: color .5s ease-in;
-moz-transition: color .5s ease-in;
-o-transition: color .5s ease-in;
-webkit-transition: color .5s ease-in;
}
.my_class:hover {
color:#066;
}
可以用作:创建链接和按钮的鼠标悬停时候的效果。
把鼠标移过来看看效果
当前前端

css3运动过渡范例

.my_class {
transition: transform .5s ease-in;
-moz-transition: -moz-transform .5s ease-in;
-o-transition: -o-transform .5s ease-in;
-webkit-transition: -webkit-transform .5s ease-in;
}
.my_class:hover {
transform: rotate(7deg);
-moz-transform: rotate(7deg);
-o-transform: rotate(7deg);
-webkit-transform: rotate(7deg);
}
posted @ 2012-12-21 13:35  {前端开发}  阅读(620)  评论(0编辑  收藏  举报