scope="row"明确告诉屏幕阅读器该th是所在整行所有后续td的标题,如“营收:120万”;必须用于tbody中标识行整体含义的首列th,不可用于thead或空白单元格,且不适用于td。

scope="row" 不是“给行表头加语义”,而是**明确告诉屏幕阅读器:这个
什么时候必须用 scope="row"
只要
scope="row":
- 财务报表里“营收”“成本”“利润”这类横向指标名
- 人员列表里“张三”“李四”这类实体名(作为行首标题,不是列名)
- 动态渲染时,不能只靠
i === 0就统一加——得判断当前循环的是 还是 ,是列头还是行头scope="row"的作用范围怎么算它不是只管紧邻右边一个
,而是从自身开始,向右覆盖本行所有后续 ,直到遇到下一个 或行尾: <tr> <th scope="row">营收</th> <td>120万</td> <td>135万</td> <td>142万</td> </tr>
上面三个
都会被读作“营收:120万”“营收:135万”“营收:142万”。如果中间插了个 ,那它之后的 就归它管。 常见错误和兼容性注意点
容易踩的坑集中在结构混淆和值滥用上:
- 在 里给列标题误写
scope="row"—— 应该是scope="col"- 为左上角空白单元格加
scope="row"(或scope="col")—— 它既不描述行也不描述列,建议留空或根据上下文用id+headers显式关联- 把
scope="rowgroup"当成“更高级的 row”来用 —— 它只在 内部、且该是整个分组总标题时才有效,硬套会破坏 JAWS 等旧版读屏器解析 - 在
上写 scope—— 属性只对有效,浏览器直接忽略 分区清晰、真正难的不是写对那一行
scope="row",而是保持整个表格结构中 /位置与语义严格对应——结构一乱, scope就失去依据。 - 为左上角空白单元格加
- 在 里给列标题误写
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











