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

UP主~冬冬 阅读 55

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

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

我来解答 赞 7 收藏
二维码
手机扫码查看
2 条解答
UI议谣
UI议谣 Lv1
CLS 这个指标有时候确实挺坑人的,特别是当你觉得页面看起来没问题的时候。首先得明白 Lighthouse 不只是测你当前看到的状态,它会模拟多种网络条件和设备类型来评估。

你说的图片没设置宽高确实是个常见问题,不过既然改了还没效果,建议看看是不是有其他动态加载的内容。有些脚本在页面渲染完后才插入元素,这种延迟加载也会造成布局偏移。

还有个容易被忽略的地方是字体。如果用到自定义字体,浏览器在下载字体时可能会先用系统默认字体显示文本,等字体下载完成再重排,这也会导致 CLS 上升。

另外可以检查下服务端有没有返回一些会影响首屏渲染的内容,比如过大的 CSS 文件或者阻塞渲染的 JavaScript。把关键资源优先加载能有效改善这个问题。

最后给个建议,用 Chrome DevTools 的 Performance 面板录一段视频,仔细看看具体哪里在变动。有时候肉眼可能看不出的小跳动,Lighthouse 可能捕捉到了。实在不行就多跑几次测试取平均值,毕竟一次测试结果可能存在偶然性。
点赞
2026-03-30 15:22
欧阳熙研
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