Vue 项目中如何引用本地字体(完整指南)

在前端开发中,我们经常会遇到需要使用自定义字体的场景,比如品牌字体、设计稿还原等。在 Vue 项目中引入本地字体其实非常简单,本文将一步步带你完整实现。

一、准备字体文件

首先,你需要下载好字体文件(常见格式):

  • .ttf

  • .woff

  • .woff2(推荐,体积更小)

然后将字体文件放到项目目录中,例如:

复制代码
src
 ├─ assets
 │   └─ fonts
 │       └─ myfont.woff2

二、在 CSS 中声明字体

在全局样式文件中(如 main.cssindex.cssApp.vue),使用 @font-face 声明字体:

复制代码
@font-face {
  font-family: "MyFont";
  src: url("@/assets/fonts/myfont.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
}

推荐写法(兼容性更好)

复制代码
@font-face {
  font-family: "MyFont";
  src: url("@/assets/fonts/myfont.woff2") format("woff2"),
       url("@/assets/fonts/myfont.woff") format("woff"),
       url("@/assets/fonts/myfont.ttf") format("truetype");
}

三、使用自定义字体

1. 全局使用

复制代码
body {
  font-family: "MyFont", sans-serif;
}

这样整个项目都会使用该字体。


2. 局部使用

复制代码
.title {
  font-family: "MyFont";
}

<div class="title">这是自定义字体</div>


四、常见问题及解决方案

1. 字体不生效

请检查以下几点:

  • 路径是否正确(推荐使用 @/assets/...

  • font-family 名称是否一致

  • 是否被其他样式覆盖


2. 打包后字体 404

如果生产环境找不到字体,可以尝试以下方式:

方式一:使用相对路径
复制代码
src: url("../assets/fonts/myfont.ttf");
方式二:放入 public 目录

目录结构:

复制代码
public/fonts/myfont.ttf

引用方式:

复制代码
src: url("/fonts/myfont.ttf");

五、建议

在实际项目中,推荐:

  • 字体目录:src/assets/fonts

  • 字体格式优先级:

    woff2 > woff > ttf

原因:

  • woff2 体积最小,加载最快

  • woff 兼容性良好

  • ttf 作为兜底方案


六、总结

在 Vue 项目中引入本地字体的核心步骤只有三步:

  1. 放入字体文件

  2. 使用 @font-face 声明

  3. 在页面中应用

掌握这套流程后,你可以轻松实现设计稿中的各种字体效果,让项目更加专业和精致。

相关推荐
Yeh20205815 分钟前
springboot+vue笔记
vue.js·spring boot·笔记
Highcharts.js21 分钟前
数学函数双曲线音频图表(y=1/x 双曲线)|图表代码示例
前端·react.js·实时音视频·highcharts·音频图表·双曲线图表
放下华子我只抽RuiKe526 分钟前
React 从入门到生产(一):JSX 与组件思维
前端·javascript·人工智能·pytorch·深度学习·react.js·前端框架
冴羽yayujs1 小时前
JavaScript 9 个先有库再有 API 的故事
开发语言·javascript·ecmascript
m0_751018661 小时前
docker 安装 nginx
vue.js·nginx·docker
油丶酸萝卜别吃1 小时前
JavaScript 深度合并函数 deepMerge 实现指南(附完整测试用例)
开发语言·javascript·测试用例
问心无愧05131 小时前
ctf show web 入门152
前端·笔记
kyriewen1 小时前
Copilot下个月按Token收钱,我算了一笔账:重度用户一年要多花3000块
前端·javascript·openai
zyl837211 小时前
3Dmol.js + Vue3快速上手
vue.js
镜宇秋霖丶2 小时前
2026.5.18@霖宇博客制作中遇见的问题
vue.js