summary属性在html5中已被废除,主流屏幕阅读器不读取、浏览器忽略、构建工具报错;替代方案为caption(首子元素,需具体)、scope/headers(明确表头归属)、aria-describedby(指向隐藏但可读的详细说明)。

summary 属性在现代 HTML 中已失效,别再用了。
为什么 summary 属性现在完全不可靠
HTML5 明确废除了 table 的 summary 属性。主流屏幕阅读器(NVDA、JAWS、VoiceOver)已基本不读取它;浏览器解析时直接忽略该属性,DOM 中查不到、JS 读不到、CSS 也样式不了。部分旧版 JAWS 甚至会因检测到废弃属性而跳过整个表格,或报出警告。VS Code、HTMLHint、CI 流程中的 linter 也会标记为 obsolete attribute,导致构建失败。
真正起作用的替代方案只有三个组合
可访问性不是靠“加个描述”就行,而是靠语义结构对齐辅助技术的预期。必须按场景选对组合:
-
caption:必须作为<table> 的第一个子元素,内容要具体(如 <code><caption>2024 年 Q1 华东区客户投诉类型分布(按数量降序)</caption>),不能是“数据表”“用户信息表”这类空泛表述 -
scope或headers:用于明确单元格与表头的归属关系。简单表格用<th scope="col"> 或 <code><th scope="row">;复杂合并表头则需配合 <code>id和<td headers="col1 col2"> <li> <code>aria-describedby:指向一段详细说明(比如数据口径、计算逻辑、异常标注),该段落需用visually-hidden类隐藏视觉样式但保留可读性,不能用display: none或aria-hidden="true" - 写
<table summary="用户基本信息表">:既无上下文(哪个系统?什么时间?哪些字段?),又不被读屏识别,纯属冗余代码 <li>用 <code>caption塞长段摘要(如 80 字说明):破坏视觉布局,违反 WCAG 1.3.1,屏幕阅读器会整段朗读,用户难以抓住重点 - 动态渲染表格后忘记同步设置
aria-describedby:引用 ID 在 DOM 中尚不存在,读屏无法关联说明文字 - 把
caption放在<thead> 里或用 CSS 移到表格底部:语义断裂,部分读屏直接跳过 <p>最易被忽略的一点:可访问性不是“加了属性就完事”,而是整个表格结构(<code>caption+scope/headers+aria-describedby)必须协同工作——缺一环,屏幕阅读器就可能只读出数字,却不知道“这是北京的环比增长率”。
常见误用和对应风险
很多人把 summary 当成“后台备注”或“SEO 描述”,结果反而损害可访问性:
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











