最直接有效的方式是用 tr:first-child,但需确保HTML结构规范;更稳妥的是将表头放入<thead>并样式化thead tr;显式添加.header-row类最灵活可靠;表头单元格应优先使用<th>以提升语义与可访问性。

表格首行单独设置样式,最直接有效的方式就是用 tr:first-child 选择器,但要注意它是否真的选中了你想要的“表头行”——这取决于你的 HTML 结构是否规范。
确认表头写在 <thead> 里更稳妥
如果表格结构清晰,把标题行放在 <thead> 中,再对 thead tr 设置样式,语义正确、兼容性好、不易误伤:
table thead tr {
background-color: #f0f8ff;
font-weight: bold;
}
tr:first-child 在简单表格中可用但有陷阱
当表格没有 <thead>,只有纯 <tr><td> 时,tr:first-child 确实能选中第一行。但需注意:
- 如果表格开头有隐藏行(如
style="display:none"的<tr>),它仍会被算作第一个子元素,导致样式错位 - 动态插入行后,
:first-child不会自动重新匹配逻辑上的“标题行” - 若第一行实际是空行或工具行(如筛选栏),就不是真正意义上的表头
用 class 显式标记表头行最灵活可靠
不依赖结构顺序,给表头行加一个明确的类名(如 class="header-row"),CSS 写法直观、易维护、无歧义:
立即学习“前端免费学习笔记(深入)”;
<tr class="header-row">
<th>姓名</th>
<th>年龄</th>
</tr>
.header-row {
background: #e6f7ff;
color: #1890ff;
}
补充:th 默认比 td 更适合做表头
即使不用 <thead>,也建议表头单元格用 <th> 而非 <td>。它自带加粗、居中等默认样式,语义清晰,还支持屏幕阅读器识别:
-
th默认font-weight: bold和text-align: center - 可配合
th:first-child或th:last-child做列级微调 - 与
scope属性结合,提升可访问性










