默认加粗居中但不可依赖,因属用户代理样式而非规范强制;必须显式声明font-weight: bold和text-align: center,并确保语义正确置于thead中以保障可访问性。

TH标签默认就是表头,但不是所有浏览器都渲染成加粗居中
th 元素语义上表示表格表头单元格,浏览器通常默认应用 font-weight: bold 和 text-align: center,但这属于用户代理样式(user agent stylesheet),不是规范强制要求。实际项目中常遇到:在某些旧版 Safari、自定义 CSS 重置后,或使用 CSS 框架(如 Bootstrap)时,th 失去加粗或居中效果。
所以不能只依赖默认行为。稳妥做法是显式声明:
- 始终为
th设置font-weight: bold(避免被normal覆盖) - 显式写
text-align: center,尤其当父级table或thead有全局居左样式时 - 注意
th默认 display 是table-cell,不要误设为block导致布局错乱
用CSS统一控制TH样式比内联style更可靠
内联 style="font-weight:bold;text-align:center;" 虽然能起作用,但重复写、难维护、无法响应式适配。推荐在样式表中统一定义:
th {
font-weight: bold;
text-align: center;
padding: 8px 12px;
}
这样还能顺便统一 padding,避免和 td 高度不一致。如果表格需要支持 RTL(如阿拉伯语),可补充 direction: ltr 或用 text-align: start 替代 center 以兼顾逻辑对齐。
TH必须放在THEAD里才语义正确,但不是必须的
很多人以为 th 只能出现在 thead 中——其实不是。th 可以出现在 tbody 或 tfoot 里(比如某行数据本身是分类标题)。但语义上,只有 thead > tr > th 才被屏幕阅读器识别为“列标题”。如果只是想视觉加粗居中,th 放哪儿都行;但如果要考虑可访问性(a11y),必须确保列头在 thead 内,且与对应列的 td 有明确的 scope 或 id/headers 关联。
- 简单表格:直接用
姓名 年龄 - 复杂表格(多级表头):需用
colspan/rowspan+scope="col"或scope="row" - 避免把
th当“加粗居中工具”滥用——该用td+ CSS 的地方别硬套th,会误导辅助技术
加粗居中失效的常见排查点
如果写了 th 却没加粗居中,先看这几处:
- 是否被更高优先级 CSS 覆盖?检查 DevTools 中
font-weight是否显示 strikethrough,或被!important干扰 - 是否父容器设置了
text-align: left且未在th上重置?text-align是可继承属性 - 是否用了 CSS 重置库(如 normalize.css)?它可能清除了
th的默认加粗,需手动补回 - 是否在
th内嵌了div或span?它们默认display: inline,会忽略text-align: center—— 此时要给内联元素设display: inline-block或用flex布局
真正麻烦的不是怎么写,而是什么时候不该用 th——语义错位比样式错位更难调试。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











