正确写法是使用theme.fontfamily扩展默认配置而非覆盖,如sans: ['inter', 'ui-sans-serif'],并确保@import或@font-face中字体名与配置完全一致(含引号、大小写、空格)。

在 tailwind.config.js 中添加自定义字体族的正确写法
Tailwind 默认不加载任何字体文件,只提供预设的 fontFamily 配置项;你必须手动引入字体(如通过 @import 或 CDN),再在配置中声明别名。漏掉任一环节,font-sans 类就只会回退到系统默认字体。
实操建议:
- 先确保字体已加载:推荐在 CSS 入口文件(如
src/index.css)顶部用@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); - 再修改
tailwind.config.js的theme.fontFamily,**不要覆盖默认键**,而是扩展它:module.exports = { theme: { fontFamily: { sans: ['Inter', 'ui-sans-serif', 'system-ui'], serif: ['Georgia', 'ui-serif', 'serif'], mono: ['Fira Code', 'ui-monospace', 'monospace'] } } } - 注意数组第一项是自定义字体名,必须与
@import中声明的完全一致(大小写、空格、连字符都不能错)
为什么 font-mono 不生效?检查字体加载顺序和 fallback 链
Tailwind 的 font-mono 类会输出 font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; —— 如果你替换了 mono,但没在 CSS 中真正加载对应字体(比如 Fira Code),浏览器就会跳过它,直接用下一个 fallback。
常见错误现象:
- 写了
font-mono,但控制台显示实际渲染的是Consolas(说明Fira Code加载失败或名称不匹配) - 字体名含空格却没加引号:
['Fira Code']❌ → 必须写成['"Fira Code"']✅ - 本地字体路径未加引号或未处理反斜杠(Windows 下尤其容易出错):
['C:\Fonts\JetBrainsMono.woff2']❌ → 应该用正斜杠或双反斜杠并加引号:['"./fonts/JetBrainsMono.woff2"']
如何让自定义字体支持粗细(font-bold)和字重变量?
Tailwind 本身不解析字体文件里的字重信息,font-bold 只是设置 font-weight: 700。能否生效,取决于你引入的字体是否包含对应字重,并且 CSS 中是否显式声明了 font-weight 和 font-style。
使用场景:
- 用 Google Fonts 时,务必在
@importURL 中明确指定字重范围,例如:family=Inter:wght@300;400;500;600;700 - 用本地字体时,需配合
@font-face手动注册每个字重:@font-face { font-family: 'Inter'; src: url('./fonts/Inter-Variable.woff2') format('woff2'); font-weight: 100 900; font-display: swap; } - 避免依赖 Tailwind 的
font-thin/font-black类——它们只是映射固定数值,若字体文件没提供对应字重,浏览器仍会降级
生产环境字体加载慢?别把 @import 放在 CSS 里
Google Fonts 的 @import 会阻塞 CSS 解析,导致 FOIT(Flash of Invisible Text)。开发时无感,上线后可能明显卡顿。
性能优化建议:
- 改用
<link rel="preconnect">+<link rel="stylesheet">提前建立连接,并利用media="print"+onload切换媒体类型来防阻塞 - 或直接下载字体文件,转为本地
@font-face引用,配合font-display: swap - 确认
tailwind.config.js中的字体名与@font-face的font-family值严格一致,包括引号、空格、连字符
最常被忽略的一点:字体名大小写敏感,且某些字体(如 IBM Plex Sans)在 Google Fonts 中注册名为 "IBM Plex Sans",但实际 CSS 中必须写成 '"IBM Plex Sans"' —— 少一个引号或错一个空格,整个链路就断了。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











