页面视觉稳定性之CLS

CLS(累计布局 shift)衡量网页内容意外移动带来的视觉稳定性。一个好的CLS分数应低于0.1,以确保大部分用户有良好的浏览体验。布局偏移由Layout Instability API检测,包括影响分数和距离分数来计算。优化CLS可通过预设图片和视频尺寸、避免在已有元素上方插入内容、使用无布局偏移的CSS属性等手段实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你是否曾经在线读一篇文章的时候,页面上突然发生了一些改变?没有任何警告,文字移动了,你不知道读到那里了。或者更糟糕的,你准备点一个链接或者按钮,但就在你手指触摸到屏幕的前一秒,链接移动了,你点到了其他地方。

大部分情况,这些体验只会引起你的反感,但有时候,会对你造成无法挽回的伤害。

如上图,当你想要点击灰色按钮的时候,突然出现了一个提示,你将点击到蓝色按钮。

预料之外的页面内容的移动经常发生,因为资源的异步加载,或者dom元素的动态添加。罪魁祸首有可能是未知尺寸的图片或者视频,或者字体文件(比默认字体大或者小),亦或是第三方广告或者挂件(会自动改变大小)。

CLS(Cumulative Layout Shift) 的性能指标可以帮你定位这些问题,通过测试真实用户这些问题发生的频率。

什么是CLS?

CLS 是所有布局偏移分数的汇总,凡是在页面完整生命周期内预料之外的布局偏移都包括。

布局偏移发生在任意时间,当一个可见元素改变了它的位置,从一个渲染帧到下一个。

### Web 性能 CLS 定义 Cumulative Layout Shift (CLS) 是一种衡量网页视觉稳定性的性能指标。具体来说,CLS 表示的是在页面生命周期内所有个体布局偏移分数的总和[^3]。当页面上的可见内容突然发生未预期的位置变化时就会产生布局偏移。 CLS 的计算不依赖于时间长短而是关注页面上元素位置的变化程度及其对用户体验的影响。对于用户而言,在浏览或交互过程中遇到频繁的内容跳动会极大地降低体验质量,因此 Google 推荐将 CLS 控制在 0.1 或更低以提供良好的用户体验[^1]。 ### 影响 CLS 的因素 多个方面可能导致 CLS 恶化: - **图片和其他媒体文件缺乏尺寸声明**:如果 HTML 中嵌入的图像或其他媒体对象没有指定宽度和高度属性,则浏览器无法提前预留空间,这会在下载完成后重新排列周围的内容造成布局变动。 - **动态注入的内容**:通过 JavaScript 动态添加到 DOM 树中的新节点如果没有预先分配好足够的空间也会引起现有布局调整。 - **字体闪现(FOIT/FOUT)**:网络字体加载期间发生的文本重绘现象同样会影响最终呈现效果从而增加 CLS 分数。 - **广告脚本行为不可预测**:第三方广告代码执行过程中的不确定性也可能带来意想不到的版面更改。 为了改善这些问题,开发者可以采取措施如预设固定大小、异步加载非关键资源以及尽早获取必要的样式表等方法来减少不必要的布局改变。 ```html <!-- 正确做法 --> <img src="example.jpg" width="800" height="600" alt="Example Image"> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值