summary属性在现代无障碍设计中完全不生效,浏览器和屏幕阅读器自HTML5起已彻底忽略它;应改用caption作为表格唯一标题,并为th显式设置scope或复杂场景下用id+headers绑定。

summary 属性在现代无障碍设计中完全不生效,别用它。 浏览器和屏幕阅读器(NVDA、JAWS、VoiceOver)自 HTML5 起已彻底忽略该属性,写 summary="用户订单列表" 不会播报、不参与语义解析,反而可能干扰表格结构识别。
为什么 DevTools 会报错“The 'summary' attribute is obsolete”
W3C 明确将 summary 标记为 obsolete,HTML5 规范中已移除其语义定义。Chrome、Firefox 等浏览器解析时直接跳过该属性,DOM 中虽仍可读取 table.summary,但只是历史残留,无实际作用。VS Code、HTMLHint、axe 等工具检测到就会标红报错,CI 流程也可能因此中断。
真正起作用的替代方案:caption + scope
一旦出现 真正影响可访问性的,从来不是某个属性写没写,而是结构是否清晰、关联是否明确、语义是否可被机器无歧义地推导。删掉 caption 是唯一被所有屏幕阅读器识别的表格标题方式,但它必须作为 的第一个子元素:
里)
(写在 外)
scope 必须显式声明在 上,否则屏幕阅读器无法建立行列归属关系: —— 告诉读屏器:这一列所有 姓名 都属于“姓名”字段
—— 仅用于 张三 中每行首个
,表示该行分类标识
加 scope —— 它只属于
复杂表头必须用 id + headers 显式绑定
rowspan、colspan 或多级表头,scope 就失效。屏幕阅读器无法自动推断一个 同时属于哪几个表头,必须靠 headers 手动指明: 加唯一 id:姓名 上用空格分隔多个 id:张三 文本 —— 比如筛选后展示的是 Q2 数据,但 还写着 “Q1 订单”,这比没写更误导用户summary 很容易,难的是每次写 时,下意识确认它管的是行还是列。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











