一个简单的数据表,顶部有一行列标题,访问起来相对简单。真正的痛苦始于复杂的表格——列和行中都有标题、合并单元格或汇总行。本文介绍了如何标记表格标题,以便屏幕阅读器“理解”每个单元格适用哪些标题,而不会丢失上下文。
简而言之 — 本指南涵盖的内容
为什么 TH 与 TD 不同
在 HTML 表格或带标签的 PDF 中,每个单元格都具有两种角色类型之一:TH(表格标题)或 TD(表格数据 - 常规数据单元格)。差异不一定是视觉上的——标题单元格和数据单元格可以看起来相同的样式——而是语义上的:TH告诉屏幕阅读器“这是一个标题,解释了下面或旁边的数据的含义。”如果没有正确的标记,屏幕阅读器会逐行浏览表格,就好像每个单元格都是相等的一样,并且很容易完全忘记哪些数据属于哪个类别。
何时范围足够,何时需要更多
对于大多数表,您可以添加范围每个 TH 单元格的属性以指示它是否是列标题(scope="col")或行标题(scope="row")。当屏幕阅读器到达数据单元格时,它会自动读出相关的列标题和行标题,因此用户会听到“1,200 - 销售额,第一季度”,而不仅仅是一个孤立的“1,200”。
对于特别复杂的表,具有超过两级标题(例如,将多个子列分组的超级标题),仅范围并不总是足够的。在这些情况下,请使用属性 id 和 headers 对:为每个标题单元格提供唯一的 id,并在每个数据单元格列表中的 headers 属性中提供与其相关的所有标题 id。这种方法更灵活,但也更复杂且容易出错——保留给真正需要它的情况。
scope="col",以及行标题(“Q1”、“Q2”、“Q3”)scope="row"—因此每个数据单元格都链接到与其相关的两个标题。摘要行和多个标题
表格底部的汇总行(“总计”、“平均值”)本身就是一种标题 - 通常适合将总计单元格本身标记为带有scope=“row”的 TH,以便屏幕阅读器将其与常规数据行区分开来。同样,带有超级标题的表对多个列进行分组(例如,跨越“Q1”、“Q2”的“2026 年销售额”)需要正确使用colspan属性与范围一起,因此在大声朗读时也会保留分层分组。
💡实用技巧
如果一个表格感觉太复杂而无法正确标记(超过两级标题、多次合并),有时最简单且最容易访问的解决方案是将其分成几个更简单的表格,或者在其旁边添加纯文本摘要。
在 Word 和 PDF 中的实际效果如何
在 Word 中,使用标准“插入 ▸ 表格”工具并在表格设计中选中“标题行”可创建正确的基础,在大多数情况下会自动将其导出为 PDF 为 TH。在 Acrobat 中,从 Word 导出并运行辅助功能检查后,需要打开标签树并确认标题单元格确实被标记为 TH 而不是常规 TD — 这是一个很容易被忽略的常见导出错误。
