CSS3变化过度类型有哪些(transition-timing-function每种过渡类型一个实例)
CSS3中的对象过度效果属性 transition 有四个值由用户设置,其中有一个为 transition-timing-function,它是用来设置元素对象的状态变化过渡类型的,也就是对象从一种状态过渡到另一种状态的变化方式,可供选择的过渡类型有近10种,大部分直接用就行了,有一个需要设置具体的参数。
transition-timing-function 的语法规则比较简单,大多是直接填一个现成的过渡效果;以下是它的语法规则和可选择的变化过渡类型以及具体的实例。
一、transition-timing-function语法规则
transition-timing-function:<single-transition-timing-function>[, <single-transition-timing-function> * ]
<single-transition-timing-function> = ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end |
steps(<integer>[, [ start | end ] ]?) | cubic-bezier(<number>, <number>, <number>, <number>)
二、语法说明
1、transition-timing-function 可以设置多组过渡效果,默认值为 ease
A、<single-transition-timing-function> 表示第一组过渡效果,不能省略;
B、[]中的 <single-transition-timing-function> 表示第二组过渡,可以省略;
C、* 表示第三组、第四组、……第n组过渡效果,可以省略;
2、<single-transition-timing-function> 取值如下:
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)
step-start:相当于 steps(1, start)
step-end:相当于 steps(1, end)
steps(<integer>[, [ start | end ] ?]):接受两个参数的步进函数。
<integer>必须为正整数,指定函数的步长,不能省略;
第二个参数:可以为 start 或 end,默认值为end,指定每一步的值发生变化的时间点,可以省略。
cubic-bezier(<number>, <number>, <number>, <number>):自定义贝塞尔曲线类型,4个数值必须在[0, 1]区间内。
三、transition-timing-function 每种过渡类型一种实例
实例中由于每个元素都要运动,所以一定要设置初始位置,不然运动不起来;例如:设置运动实例(transition-property)为left,则需设置元素离左边的距离,如实例中的 left:0px。
html代码:
<ul class="transition-timing-function">
<li class="ease">平滑过度(ease):<br />transition-timing-function:ease;</li>
<li class="linear">线性过度(linear):<br />transition-timing-function:linear;</li>
<li class="ease-in">由慢到快(ease-in):<br />transition-timing-function:ease-in;</li>
<li class="ease-out">由快到慢(ease-out):<br />transition-timing-function:ease-out;</li>
<li class="ease-in-out">由慢到快再到慢(ease-in-out):<br />transition-timing-function:ease-in-out;</li>
<li class="step-start">步进函数(step-start):<br />transition-timing-function:step-start;</li>
<li class="step-end">步进函数(step-end):<br />transition-timing-function:step-end;</li>
<li class="steps">步进函数(steps):<br />transition-timing-function:steps(2, start);</li>
<li class="steps-end">步进函数(steps):<br />transition-timing-function:steps(5, end);</li>
<li class="cubic-bezier">自定义贝塞尔曲线类型(cubic-bezier):<br />transition-timing-function:cubic-bezier(0.5, 0.2, 0.7, 0.3 );</li>
</ul>
CSS代码:
<style type="text/css">
.transition-timing-function{overflow:hidden;margin:0px;padding:0px;list-style:none;}
.transition-timing-function li{width:300px;height:60px; position:relative; margin-bottom:10px;padding:6px;border:1px solid #ab9595;background-color:#e3e2e0;}
.transition-timing-function li.ease{transition-property:top; top:0px; transition-duration:.3s;transition-timing-function:ease;}
.transition-timing-function li.linear{transition-property:bottom; bottom:0px; transition-duration:.5s;transition-timing-function:linear;}
.transition-timing-function li.ease-in{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:ease-in;}
.transition-timing-function li.ease-out{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:ease-out;}
.transition-timing-function li.ease-in-out{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:ease-in-out;}
.transition-timing-function li.step-start{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:1, step-start;}
.transition-timing-function li.step-end{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:1, step-end;}
.transition-timing-function li.steps{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:steps(2, start);}
.transition-timing-function li.steps-end{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:steps(5, end);}
.transition-timing-function li.cubic-bezier{transition-property:left;left:0px; transition-duration:.5s;transition-timing-function:cubic-bezier(0.5, 0.2, 0.7, 0.3 );}
.transition-timing-function li:nth-child(1):hover{top:80px;}
.transition-timing-function li:nth-child(2):hover{bottom:80px;}
.transition-timing-function li:nth-child(3):hover{left:180px;}
.transition-timing-function li:nth-child(4):hover{left:180px;}
.transition-timing-function li:nth-child(5):hover{left:180px;}
.transition-timing-function li:nth-child(6):hover{left:180px;}
.transition-timing-function li:nth-child(7):hover{left:180px;}
.transition-timing-function li:nth-child(8):hover{left:180px;}
.transition-timing-function li:nth-child(9):hover{left:180px;}
.transition-timing-function li:nth-child(10):hover{left:180px;}
</style>
效果图(鼠标移到上面):
-
平滑过度(ease):
transition-timing-function:ease; -
线性过度(linear):
transition-timing-function:linear; -
由慢到快(ease-in):
transition-timing-function:ease-in; -
由快到慢(ease-out):
transition-timing-function:ease-out; -
由慢到快再到慢(ease-in-out):
transition-timing-function:ease-in-out; -
步进函数(step-start):
transition-timing-function:step-start; -
步进函数(step-end):
transition-timing-function:step-end; -
步进函数(steps):
transition-timing-function:steps(2, start); -
步进函数(steps):
transition-timing-function:steps(5, end); -
自定义贝塞尔曲线类型(cubic-bezier):
transition-timing-function:cubic-bezier(0.5, 0.2, 0.7, 0.3 );