CSS3 的 transition 过渡属性,可以说是让网页动起来的一把利器。简单来说,它允许一个元素在两种不同样式之间切换时,自动生成中间的“补间动画”,而无需手动编写复杂的 Ja vaScript 定时器。过去,网页上的动画效果几乎全靠 JS 来实现,现在越来越多地转向 CSS3 过渡,原因很简单:动画更细腻,内存开销也更小。兼容性方面,IE10 开始支持,移动端表现良好,基本可以放心使用。
transition 过渡:
四个小属性
| 属性 | 意义 |
|---|---|
| transition-property | 哪些属性要过渡 |
| transition-duration | 动画时间 |
| transition-timing-function | 动画变化曲线(缓动效果) |
| transition-delay | 延迟时间 |
- transition 过渡属性是 CSS3 浓墨重彩的特性,它可以为一个元素在不同样式之间变化自动添加“补间动画”。

- 兼容性:IE10 开始兼容,移动端兼容良好。
- 曾几何时,网页上的动画特效基本都是由 Ja vaScript 定时器实现的,现在逐步改为使用 CSS3 过渡。
- 优点:动画更细腻,内存开销小。
- transition 属性有 4 个要素:
transition: width 1s linear 0s;(什么属性要过渡、动画时长、变化速度曲线、延迟时间)。
动画过渡
写法很简单:需要过渡的元素加上 transition 属性,第一个值指定要变化的属性,后面依次跟上时长、缓动曲线、延迟时间。比如上面这段代码,当鼠标悬停时,盒子宽度从 200px 过渡到 500px,整个过程持续 5 秒,线性变化,无延迟。
哪些属性可以参与过渡
- 所有数值类型的属性,都可以参与过渡,比如 width、height、left、top、border-radius。
- 背景颜色和文字颜色也都可以被过渡。
- 所有变形(包括 2D 和 3D)都可以被过渡。
all:
- 如果想让所有属性都参与过渡,可以直接写
all:transition: all 5s linear 0s;。
动画过渡
上面这个例子中,第二个盒子使用了 all,当鼠标悬停时,宽度、高度、背景色、圆角都会同时过渡,效果非常顺滑。
过渡的缓动效果:
缓动参数
- transition 的第三个参数就是缓动参数,也就是变化速度曲线:
transition: width 1s linear 0s;。
常用的缓动参数

子属性
transition-timing-function: ease;
动画过渡
这段代码展示了不同缓动参数的效果:linear 匀速,ease 慢入慢出,ease-in 加速,ease-out 减速,ease-in-out 两端慢中间快。把它们放在一起对比,视觉差异一目了然。
贝塞尔曲线:
- 如果需要更精细的控制,可以使用贝塞尔曲线自定义缓动参数。推荐一个在线工具:https://cubic-bezier.com/,它可以生成任意你想要的动画速度曲线。

总之,CSS3 过渡让动画实现变得简单又高效,掌握好四个子属性以及缓动参数,就能让你的页面交互瞬间灵动起来。