过渡

84 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第34天,点击查看活动详情

过渡(transition)

在传统的媒介上,都是静止不动的。在现在Web界面中,可以将元素淡出、菜单可以以各种效果点击或滑入滑出、各种背景色的变化从一种到另一种等,实现这些效果最简单最常用的方式就是过渡

属性

过渡是通过一系列transition-*属性来实现的。如果某个属性设置了过渡,那从一个变量值到另一个变量值的话,不是只有初始两个状态,中间可以有无数个过渡状态。

transition接受4个参数:

  • transition-property:过渡的属性,默认all
  • transition-duration:从初始值到最终值需要持续的时间,必须带单位,默认0s
  • transition-timing-function:定时函数,默认ease
  • transition-delay: 延迟,默认0s
transition: background-color 0.3s linear 0.5s;

image.png

当然,transition属性不一定都要放到一个属性中,也可以拆开出来分别写,这样虽然每个属性值更清晰,但相比没那么简洁。

如果需要定义多个属性的过渡效果,那可以通过逗号来分割,如:

transition: margin-right 1s, color 2s;

这里就分别对margin-rightcolor两个属性加了过渡效果。

定时函数

transition-timing-function在属性中是第三个值,用来控制属性中间值变化的过程,在某段时间是加速还是减速。默认ease(先加速后又减速)。

image.png

除了ease外,还有ease-in(加速),ease-out(减速)、linear(匀速)等等非常多。

开发中工具,如图:以Chrome为例。提供了一系列预设的曲线。

曲线的两端都有一条短直线-控制柄(handles),直线上有个小圆点-控制点;点击并拖动控制点可以改变曲线的形状。 image.png

类似这些有名称的定时函数,其实也就是预设了一些固定的参数而定义出来的。这些生成出来的曲线其实就是根据数学上的贝塞尔曲线来生成的。