字体不生效主因是@font-face声明错误,需确保路径正确(相对CSS文件)、格式齐全(woff2/woff/ttf)、调用精准(名称大小写及引号严格匹配)。

字体不生效,大概率是 @font-face 声明没写对,或者路径、格式、调用方式出了问题。核心就三点:路径要对、格式要全、调用要准。
检查字体文件路径是否正确
相对路径容易出错,尤其当 CSS 文件和字体文件不在同一级目录时。推荐用相对于 CSS 文件的路径,而不是 HTML 页面。
- 如果 CSS 在
css/style.css,字体在fonts/zhongyu.ttf,路径应写:url('../fonts/zhongyu.ttf') - 避免使用
./开头(多余),也别用绝对根路径(/fonts/...)除非你确定部署结构固定 - 浏览器开发者工具(Network 标签页)里搜字体文件名,看是否 404 —— 这是最直接的验证方式
确保提供多格式兼容主流浏览器
单一种格式(比如只给 .ttf)会导致部分浏览器(尤其是旧版 Safari、IE)无法加载。按需提供以下组合:
-
woff2(现代浏览器首选,体积小、性能好) -
woff(广泛兼容,推荐必加) -
truetype (.ttf)或opentype (.otf)(作为兜底,尤其对桌面端老系统)
声明时按兼容性从高到低排列,浏览器会自动选用第一个支持的格式:
立即学习“前端免费学习笔记(深入)”;
@font-face {
font-family: 'MyFont';
src: url('font.woff2') format('woff2'),
url('font.woff') format('woff'),
url('font.ttf') format('truetype');
}
font-family 名称与实际调用必须完全一致
声明里的 font-family: 'MyFont' 是自定义名称,不是文件名。后续用 font-family: 'MyFont' 才能生效,大小写、空格、引号都要严格匹配。
- 不要写成
font-family: MyFont(没引号,且首字母小写) - 避免中文名或特殊符号,如
'思源黑体'在某些环境可能解析异常,建议用英文别名:font-family: 'SourceHanSans' - 可在开发者工具的 Elements 面板中,选中元素后看 Computed → font-family,确认是否成功应用
注意字体加载时机与 fallback 处理
字体加载有延迟,页面可能先显示默认字体再替换(FOIT/FOUT)。若长时间空白或始终不换,可能是加载失败或被阻塞。
- 加
font-display: swap;让文本先用系统字体显示,等自定义字体加载完再切换(推荐) - 确保没有其他同名
font-family覆盖了你的声明(比如全局重置样式或 UI 框架自带字体规则) - 内联 CSS 或
@import引入的字体声明,需确保在使用前已解析;建议放在 CSS 文件顶部
基本上就这些。不复杂但容易忽略细节,逐项核对路径、格式、命名、调用,90% 的字体不生效问题都能解决。










