headers属性仅单向声明td与th的语义归属,需配合真实存在的、大小写一致的id才能生效,空格分隔多个id,优先级高于scope,且仅对td和数据th有效。

headers 属性本身不“连接”单元格,它只是单向声明语义归属关系——td 通过 headers 告诉屏幕阅读器:“我由这几个 th 共同描述”,而不是让浏览器或 JS 自动建立双向联动或视觉绑定。
headers 必须配 id 才生效,否则等于没写
写了 headers="name" 却没效果?八成是 <th> 没设 <code>id,或者 id 值不匹配。它只认 DOM 中真实存在的、大小写完全一致的 id 字符串,不认 class、不认文本内容、不靠位置推断。
-
<th>姓名</th>配<td headers="name"> → 白搭,缺 <code>id -
<th id="Name">姓名</th>配<td headers="name"> → 大小写不一致,断连 <li> <code><th id="name dept">部门</th>→id含空格非法,浏览器忽略该id - 动态渲染时,
<th id="name"> 还没挂载,<code><td headers="name"> 已渲染 → 首次无障碍树无关联 <h3>多级表头必须用空格分隔多个 <code>id,逗号/引号都无效一个
td同时归属「年份 + 季度 + 地区」,headers值必须是"year q1 beijing"这样的空格分隔字符串。浏览器只认空格为分隔符,其他写法全解析失败。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件下载如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
-
headers="year,q1,beijing"→ 当作一个 ID 查找,找不到 -
headers=""year" "q1" "beijing""→ 引号被当作文本的一部分,ID 匹配失败 - 漏掉任一
id(比如只写"year q1"而漏了beijing)→ 屏幕阅读器只读出部分上下文 - 顺序无关:
headers="q1 year beijing"和headers="year q1 beijing"效果一样
headers 和
scope同时存在时,scope被完全忽略WAI-ARIA 规范明确规定:只要
td上有headers,scope就被彻底覆盖。这不是互补,而是替代。混用只会增加冗余,还容易误导调试方向。- 别在同一个
td上既写headers="name age"又写scope="col" - 调试时打开 Chrome DevTools 的 Accessibility 面板,检查 “Related headers” 是否列出预期的
id,而不是看scope是否生效 - 如果某个
th同时是行头和列头(如左上角总标题),scope不支持多值,必须改用headers+ 多个id
最易被忽略的一点:headers 只对
td和作为数据单元格的th有意义;把它写在表头th上毫无作用。而且,所有被引用的th必须在同一个<table> 内,不能跨 <code><tbody> 引用——即使视觉上连续,DOM 结构隔离就等于语义隔离。</tbody> -
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










