Lighthouse 报告中 CLS 值很高,但页面看起来没跳动?

UP主~冬冬 阅读 5

我用 Lighthouse 测了一个页面,CLS(累积布局偏移)得分特别低,说是 0.35,但我在浏览器里反复刷新根本看不出内容有突然跳动啊。是不是哪里误报了?

页面里确实有个图片没设宽高,但我加了 widthheight 属性之后重新测,CLS 还是没变。这是不是 Lighthouse 的 bug?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
欧阳熙研
CLS 0.35确实偏高,但你说看不出跳动,这个其实挺常见的——人眼对轻微的布局偏移没那么敏感,特别是刷新时注意力不在那个区域的话。

先说为什么加宽高没用。最可能的情况是你用了懒加载(loading="lazy"),图片在视口外时根本不加载,等你滚动过去才加载,这时候CLS就来了。加宽高只能防止图片加载时预留空间,懒加载导致的延迟加载是另外的问题。

检查一下这几个地方:

第一,看看Network面板里这张图片是不是真的没加载。如果用了懒加载,它可能在页面初始加载时根本不请求。

第二,看是不是有动态插入的内容。广告、推荐位、或者JS动态渲染的组件最容易造成CLS。你可以打开DevTools的Performance面板录制一下,看有没有在页面加载后突然插入DOM的情况。

第三,检查你的CSS有没有覆盖了img的width/height属性。有些人CSS里写了img { width: 100%; }之类的,直接把HTML属性覆盖了。

如果确认是懒加载的问题,有几个方案:一个是给图片容器设个min-height,让它在图片加载前就占好位置;另一个是把首屏图片的loading改成eager;还有就是用aspect-ratio这个CSS属性,比width/height更可靠。

另外提醒一下,排查的时候用Lighthouse的Simulated throttling和Regular 4G模式都跑一下,看看结果差异大不大。有些时候快速网络下CLS低,慢速网络下才暴露出来。

你具体是做什么类型的页面?有没有用React/Vue之类的框架?有些框架的SSR和客户端hydration过程也会造成CLS。
点赞
2026-03-18 23:10