【问题标题】:How can I add accessibility content to HTML 'label' element?如何将可访问性内容添加到 HTML 'label' 元素?
【发布时间】:2023-10-26 12:41:02
【问题描述】:

我只是想在label 中添加更多附加内容,以实现可访问性。我在span 中包含了带有视觉隐藏类的内容。但是,屏幕阅读器 (NVDA) 无法识别其他内容。

<label for="nameInput"> 
  Name: <span class="sr-only">your name </span> 
</label>
<input id="nameInput" class="components-input" />

我无法将 &lt;label&gt; 替换为任何其他标签,例如 &lt;p aria-label&gt; 或其他标签。

我怎样才能做到这一点?

【问题讨论】:

  • 在您的具体示例中,为什么不在标签内使用“您的姓名:”或“全名:”,那么您不需要添加任何其他内容?
  • Name: your name [_______] 绝对没有意义。
  • 为什么您觉得有必要澄清“姓名”仅对使用屏幕阅读器的人表示“您的姓名”?
  • 我只是以“姓名”和“你的名字”为例..我的实际内容与此不同
  • @webspicer 如果您能提供一个更详细的示例来反映您正在努力实现的更多目标,这将帮助您获得更准确的答案。

标签: html accessibility forms screen-readers


【解决方案1】:

aria-label 确实适用于非语义元素,例如 &lt;div&gt;&lt;span&gt;,但您必须为元素指定 role。您需要一个标签和一个角色才能让屏幕阅读器阅读它。

我逐字运行了您的代码示例,它在 firefox 61 (quantum) 和 nvda 20182.1 上运行良好。它还适用于 JAWS 2018 和 ie 11。

听起来您可能还有其他问题。你有一个工作示例(codepen 或生产站点)可以尝试吗?您是否使用其他屏幕阅读器或其他浏览器尝试了您的代码?

【讨论】:

    【解决方案2】:

    aria-label 属性适用于所有元素。您不需要使用段落。

    【讨论】:

    • 是的,我在标签标签中使用了 aria-label,但是,NVDA 无法识别 aria-label 内容
    • 我发现 aria-label 不适用于 div、span 等代表性元素。请阅读此NVDA Fails & paciellogroup