css3应用:transition
Transition对应的CSS属性列表:
transition-property
- 指定当元素哪个属性改变时执行Transition效果,属性可以时以下属性:none、all以及其他可以触发浏览器reflow或repaint的属性。
- 当指定为none时,动画立即停止,当指定为all的时候,则当元素产生任何属性值变化时都将执行“转换”效果,比如大小改变。
- 初始默认值为all.
transition-duration
- 指定“转换”过程的时间,如:1s、none。
- 初始默认值为0.
transition-timing-function
- 指定“转换”过程中可用的效果,预设的有:ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(x1, y1, x2, y2),默认值时easy。
- cubic-bezier为通过贝塞尔曲线来计算“转换”过程中的属性值,如下曲线所示,通过改变P1(x1, y1)和P2(x2, y2)的坐标可以改变整个过程的Output Percentage。
- 初始默认值为default.
transition-delay
- 指定一个动画开始执行的时间,即当改变元素属性值后多长时间开始执行“转换效果”
- 初始默认值为0.
属性值连写(短属性)
- transition和background等CSS属性一样支持属性值连写,比如:-webkit-transition: width 1s easy-in-out;
- 需要值得注意的是,原则上所有属性值是不区分位置的,但是“时间属性值”有点不同,浏览器会根据先后顺序决定,第一个可以解析为时间的属性值将体现为transition-duration,第二个可以解析为时间的属性值将体现为transition-delay
浏览器支持状况?
- Chrome 2+(-webkit-transition),Firefox3.7+(-moz-transition),Safari 3.1+(-webkit-transition),Opera 10.5+(-o-transition),其他浏览器暂不支持
Reflow和Repaint?
- 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); }