CSS过渡transition

476 阅读3分钟

 过渡transition是一个复合属性,包括transition-propertytransition-durationtransition-timing-functiontransition-delay这四个子属性。通过这四个子属性的配合来完成一个完整的过渡效果

transition-property: 过渡属性(默认值为all)
transition-duration: 过渡持续时间(默认值为0s)
transiton-timing-function: 过渡函数(默认值为ease函数)
transition-delay: 过渡延迟时间(默认值为0s)

transition-property

允许值: none | all | <属性名>

初始值: all

描述: 指明什么属性将触发动画效果。none 值表示没有变化。 all 值表示所有可以动画演示的属性都可以触发动画效果。否则,只有指定的属性值方式变化才能触发动画效果。

transition-duration

允许值: <时间>

初始值: 0s

描述: 指明动画持续的时间长度。

[注意]该属性不能为负值

[注意]若该属性为0s则为默认值,若为0则为无效值。所以必须带单位

[注意]该值为单值时,即所有过渡属性都对应同样时间;该值为多值时,过渡属性按照顺序对应持续时间

transition-delay

允许值: <时间>

初始值: 0s

描述: 指明动画延迟的时间长度。

[注意]该属性若为负值,无延迟效果,但过渡元素的起始值将从0变成设定值(设定值=延迟时间+持续时间)。若该设定值小于等于0,则无过渡效果;若该设定值大于0,则过渡元素从该设定值开始完成剩余的过渡效果

[注意]若该属性为0s则为默认值,若为0则为无效值。所以必须带单位

[注意]该值为单值时,即所有过渡属性都对应同样时间;该值为多值时,过渡属性按照顺序对应持续时间

transition-timing-function

允许值: ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(x1, y1, x2, y2)

初始值: ease

描述: 这个 transition-timing-function 属性描述了动画随着时间运动的速度-时间函数。可以使用几种常见的调速函数,也可以使用立方贝塞尔(cubic bezier)函数加控制点来自定义动画的变换速度方式。对于立方贝塞尔曲线方程,我们需要两个点的(X,Y)来控制曲线。点 P0 固定是 (0,0) 而 P3 固定是 (1,1)。有了这个四个点就能计算出一条立方贝塞尔曲线。

这些调速函数的意思是这样的:

linear – 线性函数,返回值一个输入值一样的结果。

ease – 减缓函数, 是缺省值, 等同于 cubic-bezier(0.25, 0.1, 0.25, 1.0).

ease-in – 等同于 cubic-bezier(0.42, 0, 1.0, 1.0).

ease-out – 等同于 cubic-bezier(0, 0, 0.58, 1.0).

ease-in-out – 等同于 cubic-bezier(0.42, 0, 0.58, 1.0)

bezier

transition的局限

transition的优点在于简单易用,但是它有几个很大的局限。

(1)transition需要事件触发,所以没法在网页加载时自动发生。

(2)transition是一次性的,不能重复发生,除非一再触发。

(3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

(4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

CSS Animation就是为了解决这些问题而提出的