Shopify CLS 由字体引起怎么修
现象#
页面打开时标题先显示系统字体,随后跳一下换成品牌字体,CLS 0.2 以上,移动端尤其明显。
原因#
- 自定义字体只声明了
@font-face,没有font-display,浏览器长时间不显示文字后突然替换 - 字体文件放在主题 assets 里但未预加载,首屏文字等到 CSS 加载完才开始换字体
- 回退字体与品牌字体的字宽差异大,换字体时行高变化推动布局
- 多个 section 各自引入字体,重复请求并触发多次重排
处理步骤#
- 在
@font-face中加font-display: swap或optional,后者完全不产生位移 - 用
{{ 'font.woff2' | asset_url | preload_tag: as: 'font', crossorigin: 'anonymous' }}预加载首屏字重 - 用
size-adjust与ascent-override校准回退字体,让替换前后行高一致 - 把字体声明收敛到一处,删除 section 内重复的
@font-face - 用 Lighthouse 的「避免布局偏移」列出具体偏移元素,确认不再是标题块
验收标准#
CLS 降到 0.1 以下;弱网下刷新页面,标题不出现明显的字体替换跳动。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。