th 标签天然加粗居中是 HTML 规范要求,必须用于表头以保障语义和可访问性;混用 td 会破坏屏幕阅读器识别,thead 包裹表头行更健壮,合并单元格时仍须用 th。

th 标签天然加粗居中,不用额外写 CSS —— 这是 HTML 原生行为,不是浏览器“默认样式”而是规范要求。
用 th 替代 td 就能加粗居中
表头单元格必须用 th,不能只靠 CSS 强行加粗 td。浏览器对 th 的渲染是语义化强制行为:加粗 + 水平居中 + 垂直居中(默认)。
-
th是语义标签,表示“表头”,td表示“数据”,混用会破坏可访问性(屏幕阅读器会跳过或误读) - 即使你给
td加了style="font-weight:bold",它也不会自动居中,还得手动加text-align:center - 表格第一列也可能是表头(如左侧分类栏),这时应把整列的
td改成th,而不是只改第一行
thead + th 是更健壮的结构写法
仅用 th 能工作,但加上 thead 明确划分表头区域,对长表格、打印、CSS 选择器和辅助技术都更友好。
-
thead包裹所有表头行(不只第一行),tbody包裹数据行,这是语义分组,不是装饰 - 这样写后,可以用
thead th精准控制所有表头样式,避免误选tbody th(比如某些带表头的嵌套子表) - 滚动长表格时,部分浏览器/框架(如
position: sticky)依赖thead才能固定表头
别用 font-weight:bold 覆盖 th 默认样式
除非你明确要取消加粗(比如设计稿要求细体表头),否则不要给 th 设置 font-weight:normal 或其他值 —— 它本就该加粗。
立即学习“前端免费学习笔记(深入)”;
- 如果发现
th没加粗,大概率是外部 CSS 重置了(比如全局设置了* { font-weight: normal; }),查th的 computed style 就能定位 - 想统一字体粗细?优先改
th的font-weight,而不是把所有表头都写成td再加样式 -
th默认有font-weight:bolder(不是bold),在某些字体下视觉差异比bold更明显
合并单元格时仍要用 th
colspan 或 rowspan 合并的表头单元格,依然必须用 th,不能因为“跨了多列”就退化成 td。
- 错误写法:
<td colspan="2">总销售额</td>→ 丢失语义,屏幕阅读器读作普通数据 - 正确写法:
<th colspan="2">总销售额</th>→ 保持表头身份,且加粗居中自动生效 - 合并后的
th仍可单独加样式,比如background-color:#f0f0f0,不影响其加粗行为
真正容易被忽略的是语义完整性:一个 th 没写错,但整张表没用 thead、没区分行列表头、把左侧标题当数据塞进 td——这些会让加粗“看起来没问题”,却在可访问性和维护性上埋坑。



















