HTML
<caption>标签:为表格提供清晰标题与上下文
理解 <caption> 标签的作用及其在可访问性中的重要性
掌握 <caption> 的正确放置位置和基本语法
学会通过 CSS 自定义标题样式(字体、间距、对齐等)
遵循语义化与无障碍设计的最佳实践
<caption> 标签<caption> 是 HTML 中用于为 <table> 提供标题或描述性说明的标签。它相当于表格的“名称”,帮助用户快速理解表格内容的用途,尤其在数据量大或结构复杂时至关重要。
必须是 <table> 的第一个子元素
默认显示在表格上方居中
被屏幕阅读器识别为表格的“标题”,极大提升无障碍体验
支持所有全局属性(如 id、class)和事件属性(如 onclick)
<table>
<caption>学生信息表</caption>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<tr>
<td>李明</td>
<td>20</td>
</tr>
</table>标题“学生信息表”清晰说明了表格内容,且位于
<table>开始后立即声明。
<table>
<caption>员工详情</caption>
<thead>
<tr>
<th>姓名</th>
<th>职位</th>
</tr>
</thead>
<tbody>
<tr>
<td>王磊</td>
<td>项目经理</td>
</tr>
<tr>
<td>赵敏</td>
<td>前端工程师</td>
</tr>
</tbody>
</table><head>
<style>
table {
width: 100%;
border-collapse: collapse;
margin-top: 16px;
}
th, td {
border: 1px solid #333;
padding: 10px;
text-align: left;
}
caption {
font-size: 1.4em;
font-weight: bold;
color: #2c3e50;
margin-bottom: 12px;
text-align: left; /* 可自定义对齐 */
}
</style>
</head>
<body>
<table>
<caption>商品价格清单</caption>
<tr>
<th>商品名称</th>
<th>价格</th>
</tr>
<tr>
<td>智能手机</td>
<td>¥3,999</td>
</tr>
<tr>
<td>笔记本电脑</td>
<td>¥6,888</td>
</tr>
</table>
</body>通过 CSS,我们可以控制
<caption>的字体大小、颜色、间距甚至对齐方式(默认居中,但可改为左对齐等)。
<!-- 错误:caption 不在最前面 -->
<table>
<thead>
<tr><th>姓名</th></tr>
</thead>
<caption>学生名单</caption> <!-- 无效位置! -->
</table><table>
<caption>学生名单</caption>
<thead>
<tr><th>姓名</th></tr>
</thead>
</table>屏幕阅读器会自动读出 <caption> 内容,让用户在浏览前就知道表格主题。
相比使用普通 <p> 或 <h3> 标题,<caption> 与表格语义绑定,不会被误认为是独立段落。
符合 WCAG(Web 内容无障碍指南)要求,提升网站包容性。
建议:即使视觉上不需要显示标题,也应保留
<caption>并通过 CSS 隐藏(如clip-path),以保障无障碍访问。
始终为重要表格添加 <caption>
尤其是数据报表、统计表、配置表等。
标题要具体、有意义
✅ “2025 年第一季度销售数据”
❌ “表格”
用 CSS 控制样式,而非内联属性
避免使用过时的 align 等属性。
不要用 <caption> 替代 <th><caption> 是整个表格的标题,<th> 是列 / 行标题,二者互补。
考虑隐藏但保留语义(高级技巧)
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}<table>
<caption class="visually-hidden">用户登录失败次数统计</caption>
<!-- 表格内容 -->
</table>如果一个网页中有多个表格,是否每个都必须有 <caption>?什么情况下可以省略?
如何通过 JavaScript 动态修改某个表格的 <caption> 内容?
在响应式设计中,当屏幕很窄时,长标题的 <caption> 可能换行混乱。有哪些 CSS 技巧可以优化其显示?