CLS 发生在可见内容已经被绘制之后又发生移动,使用户正在看的东西发生位移。原因几乎总是没有预留空间就加载的内容。
top、height)而不是 transform。width/height(或 aspect-ratio),以便在加载前就预留空间:<img src="/photo.jpg" width="1200" height="800" alt="..."> <!-- reserves the box -->
.hero { aspect-ratio: 16 / 9; } /* reserves ratio for responsive media */
font-display: optional 或 swap 加上 size-adjust/preload,以在 Web 字体到达时最小化重排。position: absolute)或从底部推入。transform/opacity 做动画——它们是合成的,不会触发布局。CLS 是最可修复的 Core Web Vital——它通常就是少数几处缺失的尺寸。面试官用它来测试你是否理解渲染管线:预先预留空间意味着浏览器永远不必重排,这也正是 transform 胜过对 top 做动画的原因。