font-variant: small-caps 对 无效主因是默认 bold 干扰且中文字体无小型大写字形;需设 font-weight: normal 并指定支持该特性的英文字体如 georgia。

font-variant 不能直接作用于 <th> 实现小型大写字母<p>直接给 <code><th> 设置 <code>font-variant: small-caps 往往无效,不是因为你写错了,而是因为浏览器默认对 <th> 应用了 <code>font-weight: bold,而多数中文字体(以及部分英文字体)在加粗状态下不支持 small-caps 渲染——它会退化回普通大写或直接忽略该属性。必须显式指定支持 small-caps 的字体族
font-variant: small-caps 只对有对应字形的字体生效,且仅对小写字母起作用(a–z),大写字母和数字不变。常见系统字体如 "Helvetica"、"Arial"、"Segoe UI" 在常规字重下可能支持,但 "Microsoft YaHei"、"PingFang SC"、"Noto Sans CJK" 等中文字体基本不提供小型大写字形,强行设置也无视觉变化。
- 推荐用明确支持
small-caps的英文字体:例如"Georgia"、"Times New Roman"、"Libre Baskerville"(需引入) - 确保字体加载成功后再应用样式,否则 fallback 字体会导致失效
- 不要依赖系统中文字体实现小型大写——它们没有对应字形
正确写法:组合 font-variant + font-weight + font-family
关键是要解除 bold 对 small-caps 的干扰,并锁定可用字体:
th {
font-variant: small-caps;
font-weight: normal; /* 必须设为 normal 或 400 */
font-family: "Georgia", "Times New Roman", serif;
}
如果表头内容是英文(比如 <th>username</th>),这样就能看到 a→A、b→B 的小型大写效果;如果是 <th>Username</th>(首字母大写),则只有后续小写字母被转换,U 保持原样且不会变小。
-
font-variant: small-caps不改变字母大小,只是用更窄、略低的小型大写字形替代小写字母 - 若想让整个文本“看起来”像小型大写(包括原本的大写字母),得用 JavaScript 手动转小写再套样式,或改用
text-transform: lowercase+font-size: 0.8em模拟(非真实字形) - CSS 中
font-variant是简写属性,完整写法应为font-variant-caps: small-caps(现代推荐),兼容性稍差但语义更准
实际用在表格时要注意内容与语言匹配
小型大写字母本质是西文字体排版特性,对中文、日文、韩文字符完全无效。如果你的表头混用中英文(如 <th>用户 ID</th>),那只有 “id” 部分可能响应 small-caps,而 “用户” 两个字毫无变化——这不是 bug,是字体设计决定的。
- 纯英文表头才适合用
small-caps,且建议控制长度(过长易读性下降) - 检查 DevTools 中 computed styles,确认
font-variant-caps计算值是否为small-caps,并查看实际渲染字体名(font-family fallback 是否命中了支持字体) - 不要为了“统一风格”硬套该属性——它不是装饰开关,而是字体功能开关
真正起效的前提,是你正在用的字体文件里确实嵌入了小型大写字母字形,而不是靠浏览器模拟。这点很容易被忽略,但决定了你调半天样式却没变化的根本原因。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











