← [ BACK_TO_NOTES ]

合成层动画

合成层动画:优先使用 transform、opacity 属性,利用 GPU 合成层避免重排重绘。

#concept #evergreen #frontend

[!info] related notes

合成层动画

一句话定义

合成层动画是优先使用 transform 和 opacity 属性,利用 GPU 合成层实现流畅动画,避免触发布局和重绘的优化技术。

核心内容

浏览器渲染流水线

  1. 解析 HTML → DOM
  2. 解析 CSS → CSSOM
  3. 合成 Render Tree
  4. Layout(布局)
  5. Paint(绘制)
  6. Composite(合成)

性能成本排序

重排(Layout) > 重绘(Paint) > 合成(Composite)

推荐的动画属性

属性触发阶段性能
transform合成最优
opacity合成最优

不推荐的动画属性

属性触发阶段性能
width/height布局差
top/left布局差
margin布局差

常见做法

/* 推荐:使用 transform */
.box {
  transform: translateX(100px);
}

/* 不推荐:使用 top/left */
.box {
  left: 100px;
}

边界与易混淆点

为什么要用 transform 而不是 top/left

  • top/left 改变会触发 Layout(重排)
  • transform 改变只触发 Composite(合成)
  • 重排成本 >> 合成成本
创建于 2026/4/6 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本