aria-labelledby
连接一个标签和多个文本节点_____20160503aria-labelledby
属性可被用来标记所有视觉对象。aria-labelledby
可用于输入控件,可以被用来标记原生输入控件和非原生输入控件,例如
contenteditable="true"
的自定义输入控件div
;
aria-labelledby
的一个特殊使用是为文本输入控件提供一个有意义的标签,且该标签包含一个或多个标签文本;
开发者设计不同的标签ids
,把这些标签连接起来作为输入元素的标签。aria-labelledby
属性的值是使用空格分开的所有id的列表,这样屏幕阅读器就可参考列表顺序读出标签文本。支持该技术的用户代理会将标签文本连接起来,并作为一个连续的标签读出来。
某些情景下,连接标签文本非常有用。在样例1中,一个input
元素在一个句子中。期望的屏幕阅读器输出是“延长时间至20分钟——自动完成编辑框,选择20”。因为文本输入控件的id
,被包含在aria-labelledby
属性列表中,输入元素的值会被包含在右侧的连接标签中。
aria-labelledby
的另一个应用是页面中在输入元素旁没有空间提供视觉标签,或者使用原生labels
会生成不必要的冗余。这里,使用aria-labelledby
为提供页面上其他视觉元素的id作为输入元素的标签,详见样例2。
注意:ARIA无障碍名字和描述计算指出,由aria-labelledby
指定的文本应该代替而不是添加到本就有标记功能的元素。所以添加aria-labelledby到原生label
中,会代替该label
中的文本内容,除非在id
引用列表中加入label
自身的id
。
一个文本输入控件在时限到达之前允许用户延长默认时间。
字符“延长时间至”被包含在原生label
,被链接到id="timeout-duration"
的输入元素上。该标签使用for/id链接输入控件,只在不支持ARIA的用户代理中。在支持ARIA的用户代理中,for/id链接会被忽略,输入控件的标签只由aria-labelledby
提供。
文本输入元素的aria-labelledby
属性引用了三个元素:(1)span
包含原生label
,(2)文本输入包含默认文本“20”(该输入元素没有使用label
的for/id来连接),(3)文本“分钟”被包含在一个span
中。这些元素应该连接起来提供文本输入的完全标签。
注意:在span
元素上使用tabindex="-1"
并不意味着脚本无法聚焦,这只是让一些浏览器(IE9,IE10)将span
元素包含在可访问树中,让aria-labelledby
引用可获得。详情请见可访问HTML元素。
会议工作坊预定表格包含两个平行的轨道允许用户选择想要参加的工作坊。当tab到表格中复选框,轨道,标题,工作坊的演讲人,后面跟着一个“参加”复选框标签,通过使用aria-labelledby
连接为复选框的标签。
一些浏览器/屏幕阅读器组合可能额外读出相关联单元格标题。(例如,Firefox和NVDA)
各读屏、各浏览器的支持效果
测试人: