SEO

累积布局偏移(CLS)

累积布局偏移(CLS)是一项 Core Web Vitals 指标,用于量化可见内容在页面生命周期内意外偏移位置的程度。它刻画的是「内容跳动」问题,即用户想点击某个按钮时,按钮在最后一刻移动了位置。

累积布局偏移(CLS)是一项 Core Web Vitals 指标,用于量化可见内容在页面生命周期内意外偏移位置的程度。它刻画的是「内容跳动」问题,即用户想点击某个按钮时,按钮在最后一刻移动了位置。

为什么重要

CLS 是 Google 已确认的排名信号,也是三项 Core Web Vitals 之一。Google 的阈值为:良好 ≤ 0.1,需要改进 0.1 至 0.25,较差 > 0.25。高 CLS 会损害用户信任,Google 的研究表明,CLS > 0.15 的页面跳出率要高出 24%。它也是最容易修复的 Core Web Vital,因为几乎每种成因都有简单的补救办法。

CLS 如何计算

CLS 分数 = 影响比例 × 距离比例,对页面生命周期内所有意外布局偏移求和得出。

  • 影响比例:受偏移元素影响的视口占比(偏移前与偏移后区域的并集)。
  • 距离比例:任何元素移动的最大距离,以视口的比例表示。

自 2021 年起,Chrome 采用「窗口化 CLS」,只统计最差的 5 秒窗口,因此长时间运行的 SPA 不会因一时的糟糕表现而被永久惩罚。

常见原因

未指定尺寸的图片:没有 width/height 属性的 <img> 会迫使浏览器在图片加载时重新排版。

未预留空间的广告和嵌入内容:在初次渲染之后插入的第三方广告位会把内容往下挤。

导致 FOIT/FOUT 的网页字体:当自定义字体加载时,由于后备字体的度量不同,文本会重新排版。

动态注入的内容:出现在已有内容之上的「你可能也喜欢」小工具、Cookie 横幅和通知。

并非基于 transform 的动画:对 topleft 做动画会触发布局,而对 transform 做动画则不会。

如何修复 CLS

为图片和视频设置明确的尺寸<img width="800" height="600">,浏览器会在文件加载前预留空间。

预留广告位空间:为广告容器设置固定的 min-height,使插入的广告不会挤压内容。

使用 font-display: optional 或预加载网页字体,以尽量减少 FOUT。

在首屏以下插入新内容,或在用户交互时插入,而不是插入到已有内容之上。

只用 transformopacity 做动画,它们不会触发布局。

使用 aspect-ratio CSS 来处理没有明确尺寸的响应式媒体。

测量 CLS

实地数据:CrUX、Search Console 的 Core Web Vitals 报告、PageSpeed Insights 的实地数据部分。

实验室数据:Lighthouse、Chrome DevTools 的 Performance 面板。请注意,实验室 CLS 可能与实地数据不同,因为真实用户会触发不同的滚动位置和交互。

CLS 按真实用户数据的第 75 百分位进行评定,因此对 SEO 而言,真正起作用的是实地数据。

Sources: