HTML 的 <thead> 元素

1. 引言

在 HTML 表格中,<thead> 元素用于定义表格的表头分组。它通常与 <tbody>(表体)和 <tfoot>(表尾)一起使用,将表格内容按语义划分为三个部分。合理使用 <thead> 不仅能让 HTML 结构更清晰,还能提升无障碍访问体验,并为 CSS 样式和 JavaScript 操作提供便利。

2. 基本语法

<thead> 元素必须作为 <table> 的直接子元素,并且应出现在 <tbody> 和 <tfoot> 之前。其内部通常包含一个或多个 <tr> 行,行内使用 <th> 定义表头单元格。

html 复制代码
<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
      <th>城市</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>25</td>
      <td>北京</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>30</td>
      <td>上海</td>
    </tr>
  </tbody>
</table>

3. 与 tbody、tfoot 的分工

一个完整的语义化表格可以由三个分组元素构成:

  • <thead>:表头,通常包含列标题,可重复出现在打印的每一页顶部。
  • <tbody>:表体,存放主要数据行,一个表格可包含多个 <tbody>。
  • <tfoot>:表尾,通常放置汇总信息,如合计、平均值等。
html 复制代码
<table>
  <thead>
    <tr>
      <th>产品</th>
      <th>销量</th>
      <th>金额</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>键盘</td>
      <td>120</td>
      <td>¥6,000</td>
    </tr>
    <tr>
      <td>鼠标</td>
      <td>200</td>
      <td>¥5,000</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td>合计</td>
      <td>320</td>
      <td>¥11,000</td>
    </tr>
  </tfoot>
</table>

4. 使用场景与注意事项

4.1 长表格滚动时固定表头

当表格数据较多、页面需要滚动时,可以结合 CSS 让 <thead> 固定在可视区域顶部,提升阅读体验。

css 复制代码
thead th {
  position: sticky;
  top: 0;
  background: #f5f5f5;
}

4.2 无障碍访问

屏幕阅读器会依据 <thead> 识别表头区域,配合 <th scope="col"> 或 <th scope="row"> 可更准确地描述单元格与表头的关系。

html 复制代码
<thead>
  <tr>
    <th scope="col">姓名</th>
    <th scope="col">年龄</th>
  </tr>
</thead>

4.3 注意事项

  • <thead> 内部只能包含 <tr> 元素,不能直接放置 <td> 或其它内容。
  • 一个 <table> 中最多只能有一个 <thead>。
  • 若省略 <thead>,浏览器会自动将表格首行视为表头行,但显式使用语义更清晰。

5. 总结

<thead> 是 HTML 表格语义化的重要组成部分,它把表头从数据中分离出来,便于样式控制、脚本操作和无障碍访问。在实际开发中,建议始终显式使用 <thead>、<tbody> 和 <tfoot> 三个分组元素,让表格结构更规范、更易维护。

相关推荐
FungLeo9 小时前
成为全栈·React 管理后台篇·总复盘:从“接口能调通”到“后台值得使用”
前端·react.js·前端框架·项目复盘·成为全栈
Csvn11 小时前
并发模式:让渲染学会排队、插队和让路
前端
可乐鸡翅yeah_11 小时前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
Flynt11 小时前
Linear 用 1000 个 PR 换掉 styled-components,我写了 200 个按钮,把这笔账复现了一遍
前端·css·preact
JavaGuide12 小时前
NVIDIA 又开源了!这次给 AI Agent 加上权限管控
前端·后端
excel12 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
莪_幻尘14 小时前
Skill 体检:30 个 Skill 全凭感觉?体检器先自曝了 8 个“假 0 分
前端·人工智能·llm
风骏时光牛马14 小时前
AI模型综合能力评测:性能、指令遵循与多场景实测对比
前端
Frag0ut14 小时前
Chrome与Chromium内核浏览器在Windows 11上的新特性全景解析
前端·chrome·windows·web安全·chromium·gemini ai·playready drm