th 的 scope 属性必须显式声明表头作用范围:scope="col"用于列标题(管下方整列),scope="row"用于行标题(管右侧同行列),复杂嵌套表头则需改用 headers/id 绑定。

th 标签的 scope 属性到底怎么用?
th 默认只表示“这是表头”,但浏览器和读屏软件无法自动判断它管哪一行/列。必须靠 scope 显式声明作用范围,否则语义不完整、无障碍支持失效。
常见错误是直接写 却没加 姓名 scope,或者误以为 colspan/rowspan 能替代它——它们控制的是视觉合并,和语义范围无关。
-
scope="col":该表头对应下方所有数据行的同一列(最常用) -
scope="row":该表头对应右侧所有单元格(常用于首列分类项) -
scope="colgroup"或scope="rowgroup":仅当存在或多层表头时才需使用,普通表格极少用
单行表头 + 多行数据:必须用 scope="col"
这是最典型场景:第一行是列名,下面全是数据。每个 th 必须明确告诉辅助技术“我管下面这一整列”。
| ID | 姓名 | 城市 |
|---|---|---|
| 1 | 张三 | 北京 |
漏掉 scope="col",读屏软件可能把“姓名”只关联到紧邻的“张三”,而忽略后面所有行的“姓名”列内容。
首列为表头(如带分类的表格):用 scope="row"
当第一列是行标题(比如“男生”“女生”),其他列是数值,这时 th 在行首,需声明它管本行其余单元格。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- 不能写
scope="col"—— 那会误导为“这列所有值都归它管” - 不要依赖 CSS 视觉对齐来暗示语义,
scope是唯一可靠依据
| 男生 | 25 | 87 |
|---|---|---|
| 女生 | 28 | 92 |
复杂表头嵌套时,scope 容易失效,改用 headers/id
当表头跨多行或多列(比如“成绩”下分“语文”“数学”),scope 无法精准指向,此时必须放弃 scope,改用 id + headers 显式绑定。
例如: 和 数学 —— 这种一对一或一对多的硬关联,比 95 scope 更可控。
很多人卡在这里:试图用 scope="col" 硬撑多层结构,结果读屏跳读错乱。只要出现 rowspan > 1 或 colspan > 1 的 th,优先考虑 headers 方案。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










