先把当时的情况摆出来。文章里的配图都没有设置宽高属性,图片加载完成后把下面的文字整体推下去,移动端 CLS 长期在 0.2 以上。
排查方向其实有限,先把可能性排一排。编辑器插入图片时没有输出尺寸属性。还有一种是样式里统一写了 height:auto,覆盖了默认比例。
少数情况下是响应式图片没有声明宽高比,浏览器无从预留。
上来先检查图片标签是否带尺寸
curl -s https://www.example.com/a/ | grep -o '<img[^>]*>' | head -3
补上宽高属性
<img src="1.jpg" width="800" height="450" alt="">
或用样式声明宽高比
img { aspect-ratio: 16 / 9; }
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
怎么算真的好了,看的是同一批现象。图片加载前后布局不再位移,CLS 降到 0.1 以下。
容易忽略的是,只写 width 不写 height 没有用,浏览器需要两个值才能算出占位比例,宽高比写错还会导致图片变形,检查时两个属性一起看。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。