aria-expanded 和 aria-controls 在折叠面板中的配合写法

老明同学_6484

老明同学_6484

2026-01-18

454人浏览

原创

aria-expanded 和 aria-controls 必须成对使用并确保 ID 关联与状态同步:aria-controls 指向面板唯一 ID,aria-expanded 动态反映按钮展开状态(true/false),且需与面板显隐一致;面板建议添加 role="region"、aria-labelledby 和同步切换的 aria-hidden。

aria-expanded 和 aria-controls 在折叠面板中的配合写法

在折叠面板(Accordion)中,aria-expanded 和 aria-controls 需要成对使用,才能让屏幕阅读器正确识别“哪个按钮控制哪块内容”以及“当前是展开还是收起状态”。关键不是单独写对属性,而是确保它们之间存在明确的 ID 关联和状态同步。

aria-controls 指向目标区域的 id

折叠按钮(如 )必须通过 aria-controls 属性,引用其控制的面板容器的唯一 id。这个 id 必须真实存在于 DOM 中,且不能重复。

  • ✅ 正确示例:

    面板内容
  • ❌ 常见错误:
    aria-controls 值拼错、ID 不存在、多个按钮指向同一个 ID 却没做状态隔离

aria-expanded 实时反映按钮当前状态

aria-expanded 是布尔属性,必须根据面板实际可见状态动态更新:展开时为 "true",收起时为 "false"。它只写在触发按钮上,不写在面板上。

Java Api Extractor
Java Api Extractor

从 Java 项目中提取 Controller 层接口定义为 JSON 数据。

下载
  • 初始状态需与面板默认显示一致(例如面板默认隐藏,则按钮初始 aria-expanded="false")
  • JavaScript 切换面板时,必须同步设置:
    button.setAttribute('aria-expanded', 'true');
    button.setAttribute('aria-expanded', 'false');
  • 不要写成 aria-expanded="" 或 aria-expanded="undefined" —— 这会被视为无效值,屏幕阅读器可能忽略

面板容器需配合 role 和 aria-hidden(可选但推荐)

被控制的面板区域建议添加 role="region" 并设置 aria-labelledby 指回按钮的 id,增强语义关联。同时,当面板收起时,加上 aria-hidden="true" 可进一步提示内容不可访问(注意:仅当内容完全隐藏且无需键盘聚焦时使用)。

  • 示例结构:

  • aria-hidden="true" 要随 aria-expanded 同步切换;若面板用 display: none 隐藏,aria-hidden 可省略(CSS 隐藏已具备可访问性效果),但显式声明更稳妥

避免常见组合陷阱

  • 不要只设 aria-expanded 而不设 aria-controls —— 屏幕阅读器无法知道它控制什么
  • 不要让多个按钮共用同一个 aria-controls 值却各自维护独立状态 —— 应确保每个按钮有唯一配对的面板 ID
  • 不要用 class 名或 data 属性代替 ID 关联 —— aria-controls 只认真实存在的 ID 引用
  • 避免在非交互元素(如
    )上加这些属性 —— 它们应只出现在可聚焦、可操作的控件上

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

css javascript java

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

4196

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

306

9

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

2023.07.31

12145

4

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

2024.08.14

5527

7

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

2025.12.25

2516

7

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

2024.08.14

6541

7

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

20

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.2万人学习