讲师中心 微信公众号
AI工具推荐 视频效率加速

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

老明同学_6484

老明同学_6484

发布时间:2026-01-18 17:34:31

|

454人浏览过

|

来源于php中文网

原创

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

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

Java Api Extractor
Java Api Extractor

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

下载
  • ✅ 正确示例:

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

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

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

  • 初始状态需与面板默认显示一致(例如面板默认隐藏,则按钮初始 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 引用
  • 避免在非交互元素(如 <div>)上加这些属性 —— 它们应只出现在可聚焦、可操作的控件上 </div>

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

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

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

4196

2024.01.03

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

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

306

2025.12.06

undefined是什么
undefined是什么

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

12105

2023.07.31

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

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

5527

2024.08.14

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

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

2516

2025.12.25

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

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

6541

2024.08.14

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

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

40

2026.10.28

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

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

20

2026.10.28

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

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

0

2026.10.28

热门下载

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

精品课程

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

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn