之所以用角色=“列表”和角色=“列表项”?(The reason to use role=“list

2019-07-30 01:35发布

是否有使用下面的代码的任何好处?

<ul role="list">
    <li role="listitem"></li>
    <li role="listitem"></li>
    <li role="listitem"></li>
</ul>


请问下面的代码的含义,以辅助技术一样吗?

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>

Answer 1:

答案是肯定的,当正确的语义标记被用于结构化文档辅助技术工作。 如果它是一个简单的静态列表,则没有必要将它们与角色标记。

例如:考虑角色=“列表项” ,其baseConcept被定义为HTML里。 而baseConcept HTML里,除了一个事实,即它不继承任何属性几乎相同的作用=“列表项”的定义。 更多信息

因此,考虑下面的例子:

<h3 id="header">Vegetables</h3>
   <ul role="list" aria-labelledby="header" aria-owns="external_listitem">
     <li role="listitem" aria-level="3">Carrot</li>
     <li role="listitem" aria-level="3">Tomato</li>
     <li role="listitem" aria-level="3">Lettuce</li>
   </ul>
…
<div role="listitem" id="external_listitem">Asparagus</div>

在此页面作者希望用咏叹调级属性为李家。 尽管唱段,labelledby和咏叹调,旗下拥有可应用于基础标记的所有元素, 咏叹调级属性要求的元素有一定的作用。 由于ARIA规范使用Web本体语言(OWL)来表示的类层次的角色。 OWL描述了他们的状态和属性以及这些角色为类。 所以序使用咏叹调级元素必须定义一些作用,因为普通的HTML里的人不能承受任何属性或限制。 一旦你标记为列表项的作用它要求列表项与角色=“名单”的元素所拥有。 所以,你最终使用这两种角色。

在另一方面角色也是有用的,如果还没有使用语义标记。 例如:

<div role="list">
  <div role="listitem">dog</div>
  <div role="listitem">cat</div>
  <div role="listitem">sparrow</div>
  <div role="listitem">wolf!</div>
</div>

在这里,读屏软件会指示ARIA列表(申报单的组成),其他任何普通的HTML列表。



Answer 2:

你的问题是有点暧昧,但如果你问是否有一个好处,以增加角色=“列表项”李项,其中已经有作为其默认的角色,那么这个问题的答案的具体问题是 :否。

(是的,使用锂是优选的div并需要角色=“列表项”如果你从一个div开始,虽然李是首选。但我不认为这是你的要求相当的东西。)

看看这个由史蒂夫·福克纳的博客文章 ; 他把一起何时何地在HTML5使用各种ARIA角色草稿的最佳实践文档。 该文档是目前这里的,但因为它是一个非官方的草案,我不知道是否该链接仍然会在今后的工作。

一般来说,你不需要(也不应该)指定元素的作用,如果该角色是一样的元素的默认角色。 如此以来, li元素有列表项的默认角色,没有理由重申,。

也有一些例外情况,而他们大多是关注与浏览器还没有正确地实现默认的角色为新的HTML5元素。 因此,举例来说,由于HTML5的article元件尚未被所有浏览器暴露为具有物品的一个角色,然后<article role='article'>是在和类似情况下实际上推荐的。



文章来源: The reason to use role=“list” and role=“listitem”?