font-weight合法值为100–900(步长100)及关键词normal/bold等,但实际生效取决于字体是否提供对应字重;可变字体支持连续值如372、689,需wght轴且兼容性有限。
HTML/CSS 中 font-weight 的合法值分两类:关键词(如 normal、bold)和无单位数字(100–90,以 100 为步长)。但关键点在于:并非所有字体都实现了全部 9 档字重。比如多数系统默认的
0serif 或 sans-serif 字体只提供 400(等价于 normal)和 700(等价于 bold)两档,font-weight: 600 可能被浏览器降级为 400 或模拟加粗(faking),视觉上没变化。
靠查文档或实测。Web 字体(如 Google Fonts)通常在页面上明确标注支持的 font-weight 值;系统字体则需验证:
font-family: "Helvetica Neue", Arial, sans-serif; 时,300、500、600 多数无效@font-face 引入的自定义字体,必须确保每个 font-weight 对应一个独立的字体文件(如 Roboto-Light.woff2 对应 font-weight: 300)font-weight 值——若显示为 400 却写了 600,说明未命中bolder 和 lighter 不是固定值,而是相对于父元素当前字重“向上/向下跳一档”。但这个“档”由浏览器按预设映射表决定,不可控。例如:
body { font-weight: 400; }
h1 { font-weight: bolder; } /* 可能变成 700 */
p { font-weight: bolder; } /* 父为 400 → 仍可能变成 700,而非 500 */更麻烦的是,如果父元素已是 900,bolder 也不会超出;同理 lighter 在 100 时无效。实际项目中建议直接写数字值,避免歧义。
如果你用的是支持 OpenType Font Variations 的可变字体(如 Inter、IBM Plex Sans),font-weight 数值可真正连续生效(如 372、689),前提是:
wght 轴(可通过 font-variation-settings: 'wght' 450; 验证)font-weight: 100–999(注意:可变字体允许突破 900 上限)font-weight 和 font-variation-settings,后者会覆盖前者可变字体让字重控制从“有无”变成“多少”,但兼容性需留意:IE 完全不支持,iOS Safari 13.4+ 才稳定支持 wght 轴。
最常被忽略的一点:即使写了 font-weight: 600,若字体文件缺失对应字重,浏览器不会报错,也不会警告——它就安静地回退到最近可用值。调试时得盯紧「Computed」面板里的真实取值,而不是代码里写的那个数字。