font-weight: 900 被静默降级是因为字体文件未提供该字重,浏览器自动回退到最近可用值(如700);需检查Computed面板、Google Fonts链接格式(必须wght@开头)、@font-face声明与文件元数据一致、系统字体限制及document.fonts.check验证。

font-weight: 900 被浏览器静默降级
不是你写错了,是当前字体压根没提供 900 字重。浏览器不会报错,也不会警告,只会自动 fallback 到最接近的可用字重(比如 700 或 800),你完全感知不到。用 DevTools 的 Computed 面板点开 font-weight,看最终解析值是不是 700;再点旁边显示的字体名,确认它是否真有 900 的文件。
Google Fonts 没加载对应字重
常见于直接复制链接但没显式声明 wght@ 参数。比如 Nunito Sans 的正确导入应包含 wght@0,900,而不是只写 ital,wght@0,600 这种错误格式——ital,wght@ 是非法写法,会导致整个权重参数被忽略。
正确示例:
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;900&display=swap" rel="stylesheet">
- 必须用
wght@开头,后接分号分隔的数字 - 不要混写
ital,wght@——这是 URL 解析失败的高发点 - 如果需要斜体 + 粗体组合,写成
wght@0,900;1,900
@font-face 声明与文件不匹配
自定义字体时,@font-face 中的 font-weight 必须和实际 WOFF2 文件的元数据严格一致。常见错误:
- 声明了
font-weight: 900,但文件其实是从bold.woff2改名而来,内部字重仍是700 - 用工具生成多字重字体时,没导出
900版本,却在 CSS 里写了 - src 路径指向错误文件,比如
myfont-900.woff2实际不存在,404 后浏览器回退到默认字体(通常只有400/700)
系统字体根本不支持中间或极值字重
像 PingFang SC、Segoe UI、Microsoft YaHei 这类系统字体,普遍只提供 400(normal)和 700(bold)两个字重。此时写 font-weight: 900 或 600,浏览器会直接映射到 700 或 400,不会模拟加粗(除非启用 fake bold,但那会导致模糊)。
解决思路不是硬扛 900,而是:
- 查字体厂商文档,确认它真实支持哪些字重
- 用
document.fonts.check('900 MyFont')在控制台验证(返回false就说明不支持) - 在
font-family列表里靠前放真正支持900的字体(如 Inter、Roboto Flex),系统字体放最后兜底
最容易被忽略的是:即使所有代码都对,只要字体文件本身没打包 900 字重,或者 Google Fonts 链接漏了参数,font-weight: 900 就永远只是个无效声明。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











