【问题标题】:Why is an embedded SVG causing CLS (Cumulative Layout Shift) on Desktop but not on Mobile?为什么嵌入式 SVG 会在桌面上导致 CLS(累积布局移位)而不是在移动设备上?
【发布时间】:2020-12-01 23:37:57
【问题描述】:

我正在开发一个使用大量嵌入式 SVG 的网站,而不是通过 <img> 标签链接它们,因为这会加快加载时间。它们中的大多数都非常简单,单色并且不会移位。由于我们的徽标也是作为 SVG 制作的,因此它也以 HTML 的形式嵌入到页面中。

有一天,Search Console 开始在桌面设备上报告 CLS 问题,但在移动设备上却没有。我在本地对其进行了测试,但我没有看到任何布局变化,也没有找到原因。我继续使用https://developers.google.com/speed/pagespeed/insights/https://layoutstability.rocks/ 测试了该页面,并且都报告了相同的结果,即桌面上的CLS,而不是移动设备上的。

可以在此处找到测试的屏幕截图:

CLS issue on Desktop

No CLS issue on Mobile

PageSpeed Insights reporting the causing element

正如您在上面看到的那样,PageSpeed Insights 将嵌入式徽标 SVG 标记为持续布局变化的原因。

Causing element identified

您可以在上面看到我是如何识别导致元素的。

所以现在我想知道的不仅是 SVG 移动的问题,还有仅在桌面上发生的问题。

有没有一种简单的方法可以解决嵌入式 SVG 的 CLS 问题?还是我需要指定静态高度和宽度来保留空间?我不想这样做,因为 SVG 在调整浏览器宽度时会缩放,这会限制响应能力。

我也找不到任何关于这个问题的资源,好像我是第一个发布关于它的帖子。

任何帮助表示赞赏! (作为参考,这是受影响的页面:https://hydra.bot

【问题讨论】:

    标签: html svg layout


    【解决方案1】:

    我实际上发现了这个问题,它与 SVG 无关,而是与 webfont 交换有关。从 font-family 堆栈中删除 webfont 解决了这个问题。不知道如何在没有 CLS 的情况下使用 webfonts。

    【讨论】:

    • 我也有同样的问题,而且没有webfont之类的。
    【解决方案2】:

    问题在于,拥有图像而不是指示它们增长的宽度和高度,然后根据您的 CSS 进行调整,您必须指出浏览器的尺寸以在图像加载时保留空间。

    您可以在以下位置找到更多信息:https://web.dev/optimize-cls/

    【讨论】:

      猜你喜欢
      • 2022-07-23
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多