移动体验 / 方法解读

移动端弹窗无标题时如何用 aria-label 补充说明

当移动端弹窗没有可见标题时,应使用 aria-label 属性为容器添加描述性名称,以便辅助技术用户识别弹窗用途。

移动端弹窗界面示意图
主题资料配图,非新闻现场照片 · 配图:移动端弹窗

检查弹窗容器是否包含可见标题

首先确认弹窗的 HTML 结构中是否包含一个可见的标题元素,例如 h2 或 h3。如果弹窗内存在明确的标题文本,辅助技术通常会自动读取该标题作为弹窗的名称。此时无需额外添加 aria-label,因为可见标题已经提供了足够的上下文信息。如果弹窗内没有标题,或者标题被隐藏,则需要考虑使用 aria-label 属性来提供名称。

在检查时,应确保标题元素不是通过 CSS 的 display:none 或 aria-hidden=true 属性隐藏的。即使标题在视觉上存在,如果它被隐藏,辅助技术也无法读取。对于移动端用户而言,弹窗的标题是快速理解其内容的关键,因此必须确保标题是可见且可被读取的。如果标题缺失,应优先考虑添加可见标题,而不是仅仅依赖 aria-label。

使用 aria-labelledby 关联现有标题

如果弹窗内已经存在一个标题元素,但该标题的 id 属性未被正确设置,可以使用 aria-labelledby 属性将弹窗容器与该标题关联起来。aria-labelledby 的值应包含标题元素的 id,这样辅助技术就能读取标题文本并将其作为弹窗的名称。这种方法比 aria-label 更精确,因为它直接引用了页面上的现有文本。

例如,如果弹窗内有一个 h2 标题,id 为 dialog1Title,那么可以在弹窗容器上设置 aria-labelledby=dialog1Title。这样,辅助技术在读取弹窗时,会先读取 h2 标题的内容,然后再读取弹窗内的其他内容。这种方法适用于弹窗内有明确标题,但标题与弹窗容器之间没有直接关联的情况。

使用 aria-label 提供描述性名称

当弹窗内没有可见标题,或者标题无法被辅助技术读取时,应使用 aria-label 属性为弹窗容器提供描述性名称。aria-label 的值应简洁明了地描述弹窗的用途,例如“个人详情更新确认”或“错误提示对话框”。这样,辅助技术用户就能快速了解弹窗的内容和目的。

在使用 aria-label 时,应避免使用过于简短或模糊的标签,例如“提示”或“信息”。这些标签无法提供足够的上下文信息,可能会让用户感到困惑。相反,应使用具体的描述性文本,例如“您的个人详情已成功更新,您可以在用户账户部分随时更改您的详情”。这种方法能确保辅助技术用户能够准确理解弹窗的内容。

验证辅助技术对弹窗名称的读取

完成上述设置后,应使用辅助技术(如屏幕阅读器)验证弹窗的名称是否被正确读取。在验证时,应模拟弹窗打开的过程,并检查辅助技术是否在读取弹窗内容之前先读取了弹窗的名称。如果名称被正确读取,说明设置成功;如果名称未被读取或读取错误,则需要检查 aria-label 或 aria-labelledby 的设置是否正确。

验证时,还可以检查弹窗的 ARIA 角色是否正确设置为 role=dialog 或 role=alertdialog。这些角色告诉辅助技术该容器是一个弹窗,从而触发特定的读取行为。如果角色设置错误,辅助技术可能无法正确识别弹窗,从而导致名称读取失败。因此,确保角色和标签属性的正确设置是验证可访问性的关键。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. Text labels and names - Accessibility | MDN ↗
  2. 配图:移动端弹窗 ↗
← 更多移动体验文章返回顶部 ↑