Shopify 字体用 font-display swap 还是跳动
现象#
加上 font_display: 'swap' 后标题仍下移 12px,CLS 从 0.02 涨到 0.18,滚动前就能看到文字整体挪位。
原因#
- swap 只保证先用 fallback 显示,字体换入那一刻仍按新字体的度量重排整行
- fallback 用默认 sans-serif,x-height 与字宽和品牌字体差得远,替换时行宽变化明显
- 标题的
line-height用无单位数值,字体换入后每行高度跟着变 - 标题字号用了
clamp(),换字体后断行位置改变,块高度再变一次
处理步骤#
- 在 Rendering 面板打开 Layout Shift Regions 录一次首屏,确认抖的是标题还是正文
- 给
@font-face补size-adjust、ascent-override,把 fallback 度量调到接近 - 标题
line-height固定为 px 或百分比,不要留 auto 或纯数字 - 首屏先用系统字体栈,
document.fonts.ready后再加 class 切换 - 用 WebPageTest 的 Filmstrip 对比第 1 帧与换字体帧的基线位置
验收标准#
CLS 回落到 0.05 以下,Filmstrip 里标题基线在换字体前后不再位移。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。