aria-controls 仅声明元素间的关联关系,不触发任何行为;需配合 JavaScript 控制显隐、同步 aria-expanded 和 hidden/aria-hidden 状态,并确保 ID 存在且目标有 role="region" 等可访问性属性。

aria-controls 的作用不是“控制”,而是声明关联关系
很多人以为 aria-controls 能让点击元素自动展开/收起目标,其实它只是告诉辅助技术(如屏幕阅读器)“这个按钮和那个区域逻辑相关”。浏览器不会因此触发任何 DOM 操作,也不影响 JavaScript 行为。真正控制显隐,得靠你自己写 click 事件 + classList.toggle() 或修改 hidden 属性。
- 必须用 ID 字符串作为值,且目标元素必须存在且有对应
id - ID 不能含空格或特殊字符(如
my-section-1✅,my section❌) - 一个元素可关联多个目标,用空格分隔:
aria-controls="panel1 panel2" - 目标元素建议加
role="region"或语义化标签(如),并设置aria-labelledby或aria-label便于理解上下文
怎么写才不会被屏幕阅读器忽略
仅加 aria-controls 不够,目标元素还得满足可访问性基础条件:可见性状态要通过 aria-hidden 或 hidden 显式表达,而不是只靠 CSS display: none —— 后者对辅助技术不透明。
- 推荐用
hidden属性切换显隐:
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











