5.高性能的秘密:图层与合成 来源:https://w0hog67yl81.feishu.cn/wiki/QApVwZbq0iPctdkBEl3cKaybn3g 采集状态:已完成正文采集;已滚动到底部并复查 一、 渲染流程的回顾​ 在我们深入探讨图层之前,让我们再次回顾一下简化的渲染流程:​ JavaScript → Style → Layout (布局) → Paint (绘制) → Composite (合成)​ 大多数CSS属性的更改(例如 width, height, left, top)都会触发 Layout 和 Paint,这被称为 回流(Reflow) 和 重绘(Repaint),是浏览器中非常耗费计算资源的操作。如果动画的每一帧都经历这个过程,就很容易导致卡顿。​ 二、 图层 (Layer)​ 为了优化这个过程,浏览器引入了图层 (Layer)的概念。你可以把网页想象成一个Photoshop或Sketch文件,它不是一个单一的平面,而是由多个堆叠在一起的图层组成的。​ • 默认情况: 在默认情况下,页面上的所有元素都位于同一个默认图层中。​ • 提升为独立图层: 在某些特定情况下,浏览器会为某个元素创建一个新的、独立的图层。这个过程被称为“层提升”(Layer Promotion)。​ 常见的触发层提升的CSS属性和HTML元素包括:​ • 3D 或透视变换属性:transform: translate3d(x,y,z), rotate3d(...), perspective(...) 等。​ • 使用了 will-change 属性(这是一个专门用于性能优化的属性,可以提前告知浏览器该元素将要发生变化)。​ •