HTML 表格
用 table 表达二维数据关系,配置表头 scope 与 caption,避免用表格做视觉布局。
#type / concept
#status / growing
#tech / dev / frontend
#resource / html
[!info] 关联笔记
HTML 表格
这个概念为什么出现
低库存列表是真正的二维数据:行是 SKU,列是指标。用 div 假装表格,读屏无法建立“当前单元格对应哪列表头”;用 table 画整站布局,则语义与响应式双输。
[!abstract] 一句话理解
table表达数据关系;页面布局交给 CSS。
最小可运行示例
场景:低库存 SKU 表
<table>
<caption>A 仓低库存 SKU(低于安全库存)</caption>
<thead>
<tr>
<th scope="col">SKU</th>
<th scope="col">品名</th>
<th scope="col">剩余</th>
<th scope="col">安全库存</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">A-01</th>
<td>蓝色缠绕膜</td>
<td>3</td>
<td>20</td>
</tr>
<tr>
<th scope="row">A-09</th>
<td>防潮纸板</td>
<td>5</td>
<td>15</td>
</tr>
</tbody>
</table>
期望:读屏在单元格间移动时可听到表头上下文;caption 提供表的标题。
核心模型
caption:表标题thead/tbody/tfoot:结构分区th scope=col/row:表头作用域- 复杂表:
headersid 引用(高级)
边界
- 复杂响应式表格可能需要卡片化替代布局,但要保留数据可访问策略。
- 排序/虚拟滚动是 JS 增强,不应破坏表头关联。
常见误区
[!warning] 常见误区:用 table 做整页栅格布局 这是历史做法;现代布局用 Flex/Grid。
本节总结
表格的价值是表头-单元格关系,不是边框样式。
自测题
scope="row"用在什么场景?
参考答案
行首是该行的标题性表头时(如 SKU 编码列作为行头)。
延伸阅读
| 资料 | 类型 | 支撑内容 |
|---|---|---|
| MDN table a11y | 教程 | 高级表与可访问 |