我找到了两种使用aria-属性标记区域的方法
第一个:
<;div class=“main”role=“main”aria label=“搜索结果”>;
<;a href=“”>;诸如此类</a>;
第二个:
<;div class=“main”role=“main”aria labelledby=“res1”>;
<;h2 id=“res1”class=“a11y”>;搜索结果</h2>;
<;a href=“”>;诸如此类</a>;
大白鲨读起来完全一样。那么,区别是什么?你会选择什么
此网站提供了您回答问题的原因:-
理论上,如果文本是可视的,那么应该使用aria labelledby
屏幕上的某个地方,最好使用此表单。你应该只使用
无法在屏幕上显示标签时使用aria标签。但是,在当前的支持下,您应该始终使用aria labelledby,
即使您需要隐藏标签。而至少12和
VoiceOver两人都像预期的那样阅读了aria标签,结果是
如果aria标签在中,VoiceOver无法正确读取层次结构
使用例如:
<;p id=“group1”>;外部组</p>;
<;p id=“item1”>;第一项</p>;
<;div role=“group”aria labelledby=“group1”>;
<;a href=“javascript:”role=“button”aria labelledby=“item1”>;项目内容</a>;
</部门>;
这里的一切都使用了aria labelledby,画外音将把按钮读作“第一项外部组按钮”。换句话说,按钮标签、组标签,然后是对象的类型
但是,如果将任何元素更改为使用aria标签,例如:
<;p id=“item1”>;第一项</p>;
<;div role=“group”aria label=“外部组”>;
<;a href=“javascript:”role=“button”aria labelledby=“item1”>;项目内容</a>;
</部门>;
画外音现在将该按钮解读为简单的“第一项按钮”。哪个项目使用aria标签似乎无关紧要,如果它在层次结构中的任何位置,则只会读取按钮本身的标签
从MDN:-
aria labelledby属性用于指示
作为对象标签的元素。它用于建立一个
小部件或组与其标签之间的关系。用户
诸如屏幕阅读器之类的辅助技术通常在屏幕上导航
通过在屏幕区域之间的选项卡进行分页。如果标签不可用
与输入元素、小部件或组相关联,它将不会被读取
通过屏幕阅读器
这是:-
aria label属性用于定义标记
当前元素。在屏幕上看不到文本标签的情况下使用
屏幕。(如果存在标记元素的可见文本,请使用
(取而代之的是Labelledbaria。)