上一篇
html5预加载字体
- 行业动态
- 2025-05-05
- 1
HTML5预加载字体可通过或@font-face+preload实现,需设置rel=”preload” as=”font” type属性,注意跨域需加crossorigin
HTML5 预加载字体实现原理
HTML5 的 <link rel="preload">
允许开发者提前加载关键资源(如字体),减少页面渲染时的闪烁,预加载会触发浏览器并行下载资源,但不会立即应用,需配合 @font-face
或常规字体引用使用。
核心实现代码
<!-预加载字体 --> <link rel="preload" href="https://example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin> <!-应用字体(需配合 @font-face 或直接引用) --> <link rel="stylesheet" href="styles.css">
关键属性说明表
属性 | 作用 | 示例值 |
---|---|---|
rel="preload" | 声明预加载资源 | 固定值 preload |
href | 字体文件 URL | https://example.com/font.woff2 |
as="font" | 指定资源类型为字体 | font |
type | 字体 MIME 类型(可选,浏览器可自动检测) | font/woff2 |
crossorigin | 跨域资源共享策略(需字体文件跨域时启用) | anonymous / use-credentials |
进阶优化技巧
多格式预加载
若需兼容不同浏览器,可预加载多个字体格式:<link rel="preload" href="font.woff2" as="font" type="font/woff2"><link rel="preload" href="font.woff" as="font" type="font/woff">
DNS 预解析
对第三方字体加速连接:<link rel="preconnect" href="https://fonts.example.com"> <link rel="preload" href="https://fonts.example.com/font.woff2" as="font">
优先级控制
默认preload
优先级高,可通过asLoaded
延迟加载:<link rel="preload" href="font.woff2" as="font" asLoaded>
常见问题与解决方案
问题 | 解决方案 |
---|---|
预加载字体未生效(浏览器未触发下载) | 检查路径是否正确,确保 href 指向有效字体文件,且 as 属性设为 font 。 |
跨域字体预加载失败(控制台报 CORS 错误) | 在服务器端设置 Access-Control-Allow-Origin 头,或添加 crossorigin 属性。 |
相关问题与解答
问题 1:<link rel="preload">
和 <link rel="prefetch">
有什么区别?
解答:
preload
:高优先级加载关键资源,浏览器会尽早获取并缓存。prefetch
:低优先级空闲时加载,用于非关键资源(如图片预览)。
适用场景:字体属于关键渲染资源,应使用preload
。
问题 2:预加载字体后,如何确保页面优先使用该字体?
解答:
- 在 CSS 中声明
@font-face
规则,定义字体名称。 - 将预加载的字体应用到元素:
@font-face { font-family: 'MyFont'; src: url('font.woff2') format('woff2'); } body { font-family: 'MyFont', sans-serif