ARIA role=“menuitem” for or
我发现了两种可能的解决方案:
为
标签应用role =" menuitem":
some menuitem
为标签应用role =" menuitem":
some menuitem
我认为第二种解决方案是合乎逻辑的,但是我不 而且我不能在更复杂的情况下(只有2个)使用它,因为子菜单不是标记的子代:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <li role="menuitem">some menuitem
</li>
<li role="menuitem" aria-haspopup="true">
some menuitem with children
<ul>
<li role="menuitem">submenuitem
</li>
...
</ul>
</li> |
这是正确的吗? 是否有其他可能的改进?
HTML结构由我使用的框架定义,我无法更改它。
-
您是在制作菜单栏来模仿操作系统菜单栏(带有所有相关的键盘命令等)还是仅是网站上的导航栏? 如果是前者,请阅读:w3.org/TR/wai-aria-practices-1.1/#menu如果是后者,则跳过菜单ARIA。
-
它只是一个导航栏,没有键盘命令。
-
然后,您不需要role=menu。 此外,您确实需要支持键盘用户,但是链接列表(显示为条形)就可以了。 给父容器一个role=navigation并保留它。
回答问题
如果您确实要将操作系统样式的菜单应用于应用程序,则要将role放在上。那是执行菜单项功能的项目(链接到另一个视图,页面或状态)。
因此,您的第二个建议是正确的:
some menuitem
曲线球
话虽如此,我怀疑您真的不想要操作系统样式的菜单。要查看期望的内容,请查看WAI-ARIA创作惯例项目2.14菜单或菜单栏。
通过调用这种菜单,您是在告诉屏幕阅读器的熟练用户,它将像操作系统菜单一样工作,这意味着您需要遵守下面的键盘命令(因此必须全部编码,ARIA不需要只是让浏览器尊重他们)。
相反,请考虑仅使用