正文字体加载的闪烁与占位变化会直接影响感知性能与 CLS。本文以标准 Font Loading API 实现就绪态切换与预加载,降低 FOUT/FOPA 干扰。一、预加载与字体声明<link rel="preload" as="font" href="/fonts/Inter-Variable.woff2" type="font/woff2" crossorigin> @font-face { font-family: 'Inter'; src: url('/fonts/Inter-Variable.woff2') format('woff2'); font-weight: 100 900; font-style: normal; font-display: swap; } html { font-family: system-ui, -apple-system, Segoe UI, Roboto, 'Inter', sans-serif } .fonts-ready body { transition: opacity .2s ease } 二、就绪态切换与缓存'use client' import { useEffect } from 'react' export default function FontsBoot() { useEffect(() => { const ready = () => document.documentElement.classList.add('fonts-ready') if (document.fonts && document.fonts.ready) { document.fonts.ready.then(ready) } else { ready() } }, []) return null } 三、治理要点`font-display: swap`:优先展示系统字体,待自定义字体可用后替换,减少空白闪烁。预加载:使用 `preload` 提前下载关键字体;与跨域字体需 `crossorigin`。就绪态 class:字体就绪后切换 `.fonts-ready`,用于触发轻量视觉过渡或布局稳定设置。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.919177s