性能:可变换属性与触发重绘的属性
了解哪些属性可由 GPU 加速,以及哪些属性会触发开销较大的布局重绘。
性能:可变换属性与触发重绘的属性 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
渲染管线
浏览器分三个阶段进行渲染:布局(大小和位置)→ 绘制(像素)→ 合成(GPU 图层合并)。为会触发较早阶段的属性添加动画,开销较大。
触发布局的属性
修改这些属性会迫使浏览器重新计算可能涉及整个页面的布局。请避免为它们添加动画:
width、heightmargin、paddingtop、leftfont-sizedisplay
触发绘制的属性
这些属性会跳过布局,但需要重新绘制像素,开销中等:
background-colorcolorbox-shadowborder
仅合成属性
这些属性会同时跳过布局和绘制,浏览器只需合成预先光栅化的图层。开销非常低,并由 GPU 加速:
transformopacity
CSS 动画的黄金法则
要实现流畅的每秒 60 帧动画,请仅对 transform 和 opacity 执行动画。请使用 transform: translate() 代替 top/left,并使用 opacity 代替通过 display 实现的淡入淡出。
<div class="box demo-active">Box</div>变化提示属性
will-change 会告诉浏览器在动画开始之前将元素提升到独立的 GPU 图层,从而避免动画中途出现“图层提升闪烁”。
<div class="animated">Animated</div>will-change:自动
动画完成后,请将 will-change: auto,或完全移除该属性。让过多元素保持提升状态会浪费 GPU 内存。
使用 DevTools 进行测量
请使用谷歌浏览器 DevTools 的性能标签页来录制并检查帧时间。渲染标签页可以启用绘制闪烁(绿色叠加层),显示每一帧重新绘制了哪些元素。
使用变换而不是顶部和左侧位置
影响最大的一项优化是:使用变换替代位置动画:
<div class="fly demo-active">Fly</div>颜色过渡的开销
背景颜色过渡会触发重新绘制,但不会触发布局。对于小型元素,这种做法可以接受。对于大面积背景,请考虑改用带有不透明度过渡的伪元素:
<button class="btn demo-active">Hover me</button>隔离属性
contain 属性会向浏览器提示某个元素及其子树彼此独立。这样可以限制布局失效的范围,从而提升重新绘制的性能。
<div class="widget">Widget</div>快速检查
哪两个 CSS 属性可以在合成阶段执行动画,同时不会触发布局或绘制?
回顾
为布局属性(width、top、margin)添加动画会触发开销较大的重新计算。绘制属性(color、background)的开销较低。只有 transform 和 opacity 可以在 GPU 合成阶段执行动画,而不会触发布局或绘制。要实现流畅且高性能的动画,请始终优先使用这两个属性。
常见问题解答
「性能:可变换属性与触发重绘的属性」课时是免费的吗?
是的 — 「性能:可变换属性与触发重绘的属性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「性能:可变换属性与触发重绘的属性」这节课中我会学到什么?
了解哪些属性可由 GPU 加速,以及哪些属性会触发开销较大的布局重绘。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「性能:可变换属性与触发重绘的属性」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 过渡属性、持续时间与时序
- 缓动函数:ease、linear、cubic-bezier
- 过渡多个属性
- 性能:可变换属性与触发重绘的属性