我们正在实施(即加入)WAI-ARIA支持门户网站的主导航菜单的过程。 菜单是这里所示:
菜单由经典的手段来实现<ul>
/ <li>
/ <a>
DOM树,与CSS样式看起来像水平制表符。
什么是这种插件的推荐WAI-ARIA实现?
我要在这里发表一个可能的实现作为一个答案,所以要得到的东西去。
跳过其余各段,如果你知道/不在乎在WAI-ARIA背景CSS导航菜单。
TA
序言 (这么说)
我读过从w3org最近WAI-ARIA规范的许多地方的一般理解,分类,等等。 然后,我读过有关UI插件实现的几个例子。 我找不到在这样的CSS导航菜单专门targetd任何例子。 我总是围绕发现的最接近小部件菜单中,菜单栏,和的TabPanel。 当然,我也看了在免费ARIA社区团体 (其中这个问题最初发布)。
我会说, 没有这些小部件正好匹配(CSS)导航菜单。 作为一个例子,可能的TabPanel控制在页面的某些内容( - >咏叹调的控件),说不定的MenuBar太; 但我不能肯定,一个导航菜单控制页面(它控制下页显示)的内容。 如果没有进一步的打算,还有一些其他的差异也较大。 引用是在帖子的末尾。 如果有人为导航菜单的更好(或更适合)的例子,我们很乐意了解他们。
参考
- https://developer.mozilla.org/en-US/docs/Accessibility/ARIA/ARIA_Test_Cases#Menubar_and_Menu
- http://wiki.jqueryui.com/w/page/38666403/Menubar
- http://www.oaa-accessibility.org/examplep/menubar2/
- http://test.cita.illinois.edu/aria/menubar/
- http://dev.aol.com/dhtml_style_guide#menu
- http://whatsock.com/modules/aria_tabs_menu_modules/demo.htm
- http://www.w3.org/TR/wai-aria-practices/#menu
- http://www.w3.org/TR/wai-aria/roles
- http://www-03.ibm.com/able/resources/wai_aria_intro.html
一种可能的实现将是:
HTML结构:
<div> <!-- Outer wrapper -->
<ul> <!-- Main navigation bar container -->
<li> <!-- First-level item without submenu -->
<a> <!-- Destination URL -->
</a>
</li>
<li> <!-- First-level item with submenu -->
<a> <!-- Destination URL -->
</a>
<ul> <!-- Second-level menu container -->
<li> <!-- Second-level item -->
<a>
</a> <!-- Destination URL -->
</li>
</ul>
</li>
</ul>
</div>
角色:
- 角色=”导航”为外包裹
<div>
- 角色=“菜单栏”为
<ul>
导航栏容器 - 角色=“菜单”用于第二级
<ul>
容器 - 角色=“呈现”为第一级和第二级
<li>
的菜单项(它们不需要在曝光可访问的菜单栏结构) - 角色=“菜单项”的第一级和第二级
<a>
菜单项
属性:
- 咏叹调-haspopup =“真”为第一级
<a>
具有子菜单的菜单项 - 咏叹调-labelledby =“以前的ID
<a>
为第二级菜单项” <ul>
容器
状态:
- 咏叹调选择=“真”上当前访问的第一或第二级
<a>
项; 咏叹调选择的在另一=“假” <a>
项目。 即强制的概念“选择了<==>当前页” - 咏叹调发泡=“真/假”为第二级
<ul>
容器 - 咏叹调隐藏=“真/假”为第二级
<ul>
容器 - 咏叹调-activedescendant = “”用于主
<ul>
导航栏容器。 这是具有tabIndex的另一种方法 - 的tabindex = 0上当前访问的
<a>
项; 的tabindex = -1另<a>
项目。 这是为了tab键导航栏时,首先关注在当前页面。 这是与唱段,activedescendant的另一种方法
键盘:
- 标签:移动焦点/ Web应用程序中出菜单从其他点。
- Shift + Tab键:移动焦点/ Web应用程序中出菜单的其他点,以相反的顺序。
- 向右箭头:下一个导航栏项目
- 左箭头:上一页导航栏项目
- 输入:激活当前的重点项目(即定位到相应的URL)
- 空间:激活当前的重点项目(即定位到相应的URL)
八月/ 2014:咏叹调选Vs的菜单项
在回答@Joshua Muheim评论:现在我可以看到从这里 ,以及从他提到 ,该aria-selected
属性不允许menuitem
的作用。
当我从这个最近读SO回答有鉴于当前事物的状态的一些解决方案,并有一个新提出的属性了。
作为一个供参考,你可以得到一个菜单加入唱段,posinset和ARIA-的setSize公布信息“的Y X”属性的元素与角色=菜单项。 此致,布赖恩的Garaventa
逃生关闭是一个标准的要回来的路上,它是由许多用户期望的行为。
唱腔设计模式为一系列定制的提供预期的UI行为控制http://www.w3.org/TR/wai-aria-practices/#aria_ex使用ESC键来关闭并返回到在接近触发因素是标准的UI跨桌面和网络。 尝试在谷歌的任何文档应用程序(例如)。
+ Esc键应该关闭打开的菜单和焦点返回到打开它的元素。