在已标记的输入元素上使用“ aria-labelledby”的目的?


84

许多ARIA演示网站使用以下代码:

<label for="name" id="label-name">Your Name</label>
<input id="name" aria-labelledby="label-name" type="text">


但是aria-labelledby在这种情况下使用属性的目的是什么?该input元素已经被label使用for属性的元素标记了,不是吗?



8
谢谢@Sarfraz。但是,该页面没有说明在已标记的输入元素上进行这种使用的目的。
伊恩(Yan Y.)2012年

Answers:


69

Mozilla开发人员页面上有一些很好的示例。也许他们最好的示例是将弹出菜单与父菜单项相关联的示例-页面中的示例7:

<div role="menubar">  
    <div role="menuitem" aria-haspopup="true" id="fileMenu">File</div>  
    <div role="menu" aria-labelledby="fileMenu">  
        <div role="menuitem">Open</div>  
        <div role="menuitem">Save</div>  
       <div role="menuitem">Save as ...</div>  
       ...  
    </div>  
    ...  

ARIA属性通常在构建可访问的富Internet应用程序中最有用:只要您坚持使用标准语义HTML(使用带有标准标签的表单),就根本不需要它:因此没有理由在其上使用它标签/输入对。但是,如果您要从头开始构建“丰富的UI”(DIV和其他带有JavaScript并添加交互功能的低级元素),那么让屏幕阅读器知道更高层次的意图是至关重要的。


11
谢谢@BrendanMcK。你说的是真的。我曾问过一个为ARIA工作的人,他也说在这种情况下不需要使用aria-labeled。对于标记<input>,他说只有在我们需要用多个<label>标记<input>时才使用它。这是他提供的示例:html5accessibility.com/tests/mulitple-labels.html
Ian Y.

1
通过for属性创建多个引用,可以将多个LABEL与同一控件关联。好的,WAVE / WebAIM不喜欢它,事实证明UA支持存在问题。但是他的建议很奇怪,我认为它没有任何真正的优势。 至少IE <= 8不支持aria-labelledby中的多个ID
sourcejedi 2012年

1
此链接必须
Facundo Colombier 2013年

5

UA总是有任何新问题,因此这就是开发人员寻求渐进增强的原因。这种ARIA技术提供了消除“ for”属性的能力,并允许其他元素成为丰富形式的一部分。这些技术将成为惯例。


1
单击时是否像for属性一样聚焦元素?我猜不是
Dominic

3
完全错误。aria属性不应替换其他属性,因为它们的唯一目的是帮助使元素更易于访问。由于任何aria属性,元素不应是可聚焦的。
古斯塔·范·德·沃尔

1
我认为,目前的常规做法(可悲吗?)仍然不正确。最佳实践可能是一个更好的选择。也许在将来,当先进的AI编写HTML而不是人类来编写HTML的惯常做法时:)
Michael
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.