从一个单一的、键盘友好的面板开始,该面板可以按需显示内容。 触发器必须是一个真实的按钮,带有 aria-expanded、aria-controls 和可见的焦点环;内容区域应具有 role="region" 和一个用于链接的 id。打开时,在关闭时将焦点移回触发器,并为屏幕阅读器提供一个简短的、实时区域更新。

保持结构浅显,避免深度嵌套;确保所有交互元素都有文本标签,并为重复的控件提供跳过目标。使用 CSS 来指示状态,但依靠 ARIA 属性将状态传达给辅助技术。使用键盘、屏幕阅读器和颜色对比度检查进行测试;验证焦点顺序是否与视觉顺序匹配,以及如果样式失败,操作是否仍然有效。

在一个主题示例中,场景唤起了路易斯夜晚,其中有餐饮空间和雕像看着一个广阔的面板阵列。二月活动期间,某些私人旅游团会到达;然后其他人参与,并且内容包含来自木匠工作室的几个作品,列出日期和一个罕见的比彻家族物品收藏,而一个损坏的链接需要修复。这个叙述有助于定义在哪里放置焦点,从而告知设计师在夜晚时间和活动期间与显示和隐藏系统交互的用户的状态变化。

打开菜单,关闭菜单:以可访问性为中心的导航用户界面指南

实现一个键盘优先的切换,它显示一个抽屉并在可见时捕获焦点;通过键盘和鼠标操作,触发器带有标签,并且 aria-expanded 在所有条件下都反映状态。

用文本或可访问的替代方案标记控件;您的用户应该知道元素获得焦点时的操作。

主题应该感觉自然和实用,灵感来自一个带有大理石走廊和壁画的豪宅,但它必须在塔楼、房屋和私人区域中工作。

使其在五个核心路线上和跨设备上可用;除了有特殊限制的页面外,在每次访问时保持行为一致。

焦点管理:关闭时,将焦点直接返回到切换;如果用户浏览帖子,请确保焦点在返回时落在触发器上。

内部团队对五个帖子的引导测试证实了一个稳定的、基于数量的项目顺序;包括对键盘和屏幕阅读器兼容性的快速检查。

设计节奏:将项目列表视为车站中的一组火车——顺序的、可预测的,并且易于跟踪数量的到达。

最佳实践使用设计好的语义和构造的标记:按主题分组事物,保持项目简短,并避免深度嵌套。

纸质指南和私人文档解释了如何操作该功能;确保直接反馈和透明的状态指示器。

很快,审计应该衡量建筑物和访问之间的一致性;将建立一个连贯的模式,使其更容易直接维护。

方面实施理由
焦点行为在抽屉可见时捕获其中的焦点;在隐藏时恢复到触发器保持键盘用户的方向
标签清晰可见的标签;为非文本标签提供 aria-label辅助技术理解操作
状态反馈aria-expanded 反映当前状态;尊重减少运动的偏好可靠的提示和包容性
一致性稳定的触发器位置;五个布局中一致的项目顺序减少认知负荷
内容组织将链接分组在标题下;将组保持在五到七个数量更容易扫描
隐私默认情况下避免披露私人区域;为敏感页面提供退出选项隐私和控制

触发器机制:键盘可访问的打开/关闭、ARIA-Expanded 和焦点环行为

建议:实现一个单一的、键盘友好的切换,它通过 aria-expanded 和 aria-controls 显示或隐藏一个面板,具有持久的焦点环和 Enter/Space 激活。Escape 将焦点返回到触发器并隐藏面板;确保面板已标记,并且其内容在隐藏时保持不可聚焦。

  1. 语义:使用真实的 button 元素或 role="button",带有 aria-expanded="true|false" 和 aria-controls 引用面板的 id;更新可访问的标签以反映屏幕阅读器的状态。
  2. 键盘:启用 Tab 到达触发器,Enter/Space 切换,以及 Escape 折叠;在面板展开时捕获面板内的焦点,并在折叠时将焦点返回到触发器。
  3. 焦点环:通过 :focus-visible 应用可见的焦点指示器,保持强大的轮廓或高对比度替代方案,并避免在用户使用键盘导航时删除它。
  4. 运动和持续时间:默认情况下将展开持续时间保持在 120-180 毫秒左右,尊重 prefers-reduced-motion,并首选基于 transform 的过渡而不是高度,以获得更平滑的反馈。
  5. ARIA 状态管理:与面板的可见性同步切换 aria-expanded;在折叠时设置 aria-hidden="true";确保 aria-controls 指向辅助技术的正确区域。

灵感和设计说明

焦点管理:将焦点保持在菜单中并在关闭时恢复焦点

从严格的焦点陷阱开始,将焦点保持在活动面板内,直到用户通过明确标记的操作将其关闭。第一个可聚焦元素应该是面板内的主要控件,最后一个可聚焦元素应该循环回到该入口点。没有捷径可以绕过这一点。francesco 指出,这种方法得到了键盘流测试知识的支持,对于难以获得视觉提示或行动不便的用户来说,这种交互非常舒适,并且有助于面板内的内容保持可预测性。

在序列末尾实现一个谨慎的、非视觉的捕获器,以将 Tab 重定向回第一个元素,并确保 Shift+Tab 在相反方向上正确循环。使用计算来建立强大的制表符顺序,并验证在面板处于活动状态时焦点是否无法逃逸到页面的其余部分。包括诸如 aria-modal 之类的语义来表示临时的、独立的体验,并确保焦点恢复操作将焦点返回到打开器或其最近的后备锚点。

在关闭时,将焦点恢复到打开面板的初始元素;如果找不到该元素,则将焦点返回到主内容中的下一个逻辑锚点。跨浏览器和仅使用键盘的流程进行测试,测量移动焦点的时间并确认没有不可预测的跳转。在过渡期间保持短暂的、可见的焦点指示器,以让用户放心。

источник 为图书馆、画廊和展览等机构提供了一个实用的参考,在这些机构的布局中会出现塔楼、栏杆和雕塑。如果焦点漂移,世界就会静止不动,因此设计必须是开放和可预测的。在 francesco 的团队测试中,该方法给参与者留下了深刻的印象,并承认在任务成功方面有所改进。该方法与天文般的精确度相一致:一致的焦点目标、清晰的提示和强大的计算,可帮助所有能力的用户自信地导航;并且它可能成为长时间会话和高对比度界面的高标准。

状态公告:屏幕阅读器警报,用于菜单打开/关闭,而不会中断内容

建议:在操作面板的控件旁边实现一个专用的实时区域;确保它使用 aria-live="polite"、aria-atomic="false" 和 aria-relevant="additions text",以便在不中断主要内容的情况下宣布状态更改。

消息应该简洁:面板已展开或面板已折叠,实际上是两到四个字,并且在内容阅读顺序之上。

将状态区域放置在 DOM 顺序中主内容之上,并保持控件键盘可访问;当区域打开时,将焦点返回到触发器以保留上下文。

历史示例:维多利亚时代的侧翼设有古董玻璃、圆形栏杆和食堂庭院;内部布局告知警报如何与用户任务对齐;建筑师可以在帐户中考虑这一点以支持可预测的提示。

希望最大限度地降低风险导致使用自然语言;避免使用术语,并保持语气平静和中立。

rebecca 建议按状态而不是按操作命名消息;joseph 使用票证积压测试了该方法,因为清晰度很重要,并且可以帮助依赖辅助技术的用户。

另一个罕见的边缘情况发生在访问具有气象数据或实时提要的页面期间;在那些时刻,提供一个稳定的状态声明通道,而不会与内容发生冲突。

可用的工具支持跨浏览器兼容性;确保更改在设备之间可访问,并且对该区域的访问保持简单;考虑使用 santa 测试角色来验证可读性。

实施指标包括延迟、消息长度和跳过率;目标是全面覆盖,并具有自然的节奏,从而减少认知负荷并避免中断阅读流程。

补充说明:使用裙子状的屏幕外区域来保持该区域在视觉上不显眼,同时保持辅助技术的可检测性;考虑使用杆状触发器控件,该控件易于通过键盘和触摸屏访问。

语义结构:多节菜单的正确地标、角色和标签

建议:为该组部分采用类似树的结构。容器应带有 role="tree" 和 aria-label="Section tree";每个标题都变为 role="treeitem",并根据需要带有 aria-expanded 和 aria-selected 状态。为每个项目使用唯一的代码,并保持其顺序的一致度量。安装该模式并使用屏幕阅读器进行测试,以便有人可以按级别导航、进入更深的节点,并在以后恢复并保留上下文。

标签和地标:为每个区域分配清晰、唯一的标签,将标题与 ID 配对,并通过 aria-labelledby 引用它们。确保标签仍然旨在快速识别,并为将来的添加保留空间,而无需更改现有名称。稍后添加新区域时,重用相同的标签方案以避免混淆。在场所内,将每个部分映射到不同的标题,以便访客可以一目了然地落在正确的位置。

结构和内容:嵌套子部分的 treeitem 以支持多级布局,保持一致的层次结构。如果标题装饰有装饰样式,请为辅助技术保留纯文本标签。在 colorado 子树中,您可能会看到视觉上应用的巴洛克风格;标签本身保持真实,确保通过门进入并平稳进入行为而不会丢失上下文。这种方法有助于维护易于浏览且不会因装饰而误读的信息墙。

状态管理和测试:测量焦点顺序并确保 Enter 或 Space 等操作可靠地展开或激活项目。如果某个区域已预留或尚未购买,请将其标记为 aria-disabled 并提供可见的提示,以便用户知道现在无法进入。稍后,调整标签以反映更新,例如新提供的部分,并保持它们在场所内的一致性。由于结构清晰、独特,每个人(从休闲访客到有辅助需求的人)都将体验到通过该组的直接路径。

夜间模式可访问性:夜间对比度、运动偏好和菜单交互的视觉提示

建议:实施一个系统驱动的夜间调色板,即使在图案背景上,也能保证正文文本至少 4.5:1 的对比度,交互式控件至少 3:1 的对比度。使用 #111-#1a1a1a 附近的 нейтральный 基色和符合这些规则的主元素强调色;确保标签和控件在网站上的长时间会话中保持清晰。来自 Becky 和其他设计师的观察,以及在克莱门蒂努姆等大学设施进行的测试,为这种智慧提供了支持并推动了具体的设计。十一月的检查始终如一地显示了跨设备的稳定可读性。

运动:当用户的系统发出减少运动的信号时,禁用非必要的动画并将过渡保持在 150 毫秒以下;用快速、离散的更改替换长淡入淡出;对于提示和状态更新,请使用颜色和文本标签,而不是滑动面板。这种方法减少了认知负荷,并有助于客户保持对内容的参与。

视觉提示:确保焦点指示器在浅色和图案背景上都可见。使用与周围表面形成对比的亮色 2 像素轮廓;与图标和文本标签配对,以便信号不依赖于颜色。安装的横幅或工具提示应出现在稳定的位置;避免可能使用户迷失方向的内容移动。

键盘和屏幕阅读器支持:在相关控件之间保持逻辑顺序;提供描述性的 ARIA 标签;确保打开状态的提示保持可见足够长的时间以被感知;避免在快速任务期间丢失上下文的自动隐藏,这可以在模式在各部分之间重复时保持注意力。

测试和观察:使用 WebAIM 运行对比度检查,验证普通文本的 4.5:1 和 UI 组件的 3:1;在亮度不同的设备上以及在现实环境中(例如沙龙或咖啡店)进行测试,在这些环境中,客户依赖快速提示。来自学习小组中 stiners 的观察表明,状态之间的持久信号有助于识别;包括谁的设备和图案标题,并确保电子机票流程保持可访问性。目标是减少诸如眩光和疲劳之类的问题,这些问题会减慢用户的速度并随着时间的推移节省资金。

经济学和影响:强大的夜间模式可以减少眼睛疲劳并延长会话时间,从而为客户和网站带来价值。清晰的令牌、可预测的更改和直接的切换最大限度地减少了开发工作,并有助于当前的广告系列在没有重大修改的情况下执行。在十一月的测试和实际使用中,这种方法有助于那些希望更快地访问内容而又不牺牲清晰度的人,例如重视快速阅读和简单操作的星巴克客户。

实施说明:记录一个带有 CSS 变量的调色板系统,用于背景 (--bg)、表面 (--surface)、文本 (--text) 和焦点 (--focus)。支持 prefers-color-scheme: dark 和 prefers-reduced-motion: reduce,并为旧设备提供合理的后备方案。保持排版可读,确保设计适用于胶合板和木纹纹理(如果存在图案),并与真实用户一起测试,提及克莱门蒂努姆、大学和以前的品牌环境。这些模式应该保持稳定,而不是在脚下移动,并且应该在页面上保持可访问性。

操作提醒:在受控的页面集中开始推出,并收集来自用户(例如 Becky 和其他客户)的观察结果;然后扩展到主要部分。这开始了一个稳定的循环,指南针以北旨在平衡舒适性和清晰度,谨慎行事以避免闪烁。在十一月的窗口中,并且随着网站的增长,该方法应该解决那些与胶合板表面和图案标题上的眩光相关的棘手问题,确保电子机票流程对于所有用户(包括那些设备在较旧硬件上运行的用户)保持简单。