CSS中的font-weight属性详解
字数 1015 2025-11-13 19:53:49
CSS中的font-weight属性详解
1. 属性描述
font-weight属性用于设置文本字体的粗细程度,控制字符笔画的粗细表现。该属性主要适用于西文字体家族,对中文字体的支持相对有限。属性值可以使用关键字(如normal、bold)或数值(100-900),其效果取决于字体家族本身提供的字重变体。
2. 属性值详解
-
关键字值:
- normal:正常字重(相当于数值400)
- bold:加粗字重(相当于数值700)
- lighter:比父元素更细的字重(根据继承值计算)
- bolder:比父元素更粗的字重(根据继承值计算)
-
数值值:
- 100-900:定义9级精细字重,步长为100
- 100(Thin) → 200(Extra Light) → 300(Light) → 400(Normal) → 500(Medium) → 600(Semi Bold) → 700(Bold) → 800(Extra Bold) → 900(Black)
3. 字重匹配机制
当指定字重不存在时,浏览器按以下规则匹配:
- 优先匹配精确值(如设置700时直接使用Bold字重)
- 若无精确匹配,使用最接近的可用字重(如600可能回退到700)
- 若指定值<400,优先匹配更细字重,其次更粗字重
- 若指定值>500,优先匹配更粗字重,其次更细字重
- 若指定值=400,优先匹配500,其次300
- 若指定值=500,优先匹配400,其次300
4. lighter/bolder计算规则
相对值基于继承的字重数值进行计算:
- lighter:向更细方向调整(700→400,400→300,300→100)
- bolder:向更粗方向调整(100→400,400→700,700→900)
5. 实际应用要点
- 字体支持检查:使用@font-face的font-weight描述符声明多字重
@font-face {
font-family: "Custom";
src: url("font-light.woff2") format("woff2");
font-weight: 300; /* 明确定义字重 */
}
- 回退策略:中文字体建议使用normal/bold关键字而非数值
- 性能优化:预加载关键字重避免布局偏移
<link rel="preload" href="font-bold.woff2" as="font" type="font/woff2" crossorigin>
6. 常见问题解决方案
- 字重不生效:检查字体是否支持该字重,或使用font-synthesis控制合成加粗
- 跨平台差异:使用字体栈提供跨系统一致性(如system-ui, -apple-system)
- 可访问性:确保相邻字重有足够对比度(WCAG建议字重差≥200)
通过系统化设置字重体系,可建立清晰的视觉层次,增强排版的专业性和可读性。