我看到了一些解决方案,但我无法弄清楚如何将这些解决方案放在我的代码中,或者某些解决方案使用了某些我无法在我的项目中使用的解决方案。我怎样才能使CSS下拉菜单可以访问键盘导航?
让我们进入正题:
我需要为键盘导航已经存在的CSS下拉菜单访问。我用[Tab]打开下拉菜单取得了一些进展,但我无法导航到里面的选项。
这里是我的代码:
.menu .options-menu-dropdown{
display: inline-block;
font-family: 'OpenSans Bold';
font-size: 16px;
color: #646464;
text-decoration: none;
cursor: pointer;
position: relative;
}
.menu .menu-dropdown{
z-index: -1;
visibility: hidden;
opacity: 0;
position: absolute;
top: 0;
right: 0;
min-width: 180px;
text-align: right;
overflow: hidden;
margin-top: -6px;
margin-right: -6px;
-webkit-transition: all 200ms ease-in-out;
-moz-transition: all 200ms ease-in-out;
-ms-transition: all 200ms ease-in-out;
-o-transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
}
.menu .options-menu-dropdown:focus .menu-dropdown,
.menu .options-menu-dropdown:hover .menu-dropdown{
z-index: 100;
visibility: visible;
opacity: 1;
}
.menu .title-dropdown{
background-color: #005e8b;
font-size: 16px;
padding: 8px 6px;
white-space: nowrap;
border-bottom: 1px solid #b4b4b4;
color: #FFF;
}
.menu .menu-dropdown-item{
display: block;
background-color: white;
padding: 12px 32px 12px 12px;
text-decoration: none;
cursor: pointer;
font-size: 16px;
color: #323232;
-webkit-transition: all 200ms ease-in-out;
-moz-transition: all 200ms ease-in-out;
-ms-transition: all 200ms ease-in-out;
-o-transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
border-top: #b4b4b4 1px solid;
border-left: #b4b4b4 1px solid;
border-right: #b4b4b4 1px solid;
}
.menu .menu-dropdown-item:last-child{
border-bottom: #b4b4b4 1px solid;
}
.menu .menu-dropdown-item:focus,
.menu .menu-dropdown-item:hover{
background-color: #b4b4b4;
color: #fff;
}
<div class="menu" align="center" >
<div class="options-menu-dropdown" tabindex="0">
<div>Test Menu</div>
<div class="menu-dropdown">
<div class="title-dropdown">Opened Test Menu</div>
<a href="#" class="menu-dropdown-item" tabindex="1">Menu Item 1</a>
<a href="#" class="menu-dropdown-item" tabindex="1">Menu Item 2</a>
<a href="#" class="menu-dropdown-item" tabindex="1">Menu Item 3</a>
</div>
</div>
</div>
代码http://codepen.io/WillCodebit/pen/XpaqqJ
注:我试图避免任何JavaScript的解决方案,因为在这个项目中我需要使用GWT对于任何JavaScript,这是一种我无法违反的模式。
在此先感谢。
编辑 此菜单应该具有与Google的帐户菜单类似的行为。内部的选项也必须通过键盘访问。
你可以通过查看启动在[W3C WAI-ARIA授权实践](https://www.w3.org/TR/wai-aria-practices/#kbd_general_between)草案中。这将为您提供有趣的阅读,并帮助您指导您制定合理的解决方案。 –
很好用,就是把你的源码放在这里。链接源可以稍后消失。所以这对于具有相同请求的其他人无用。 –
你也应该避免使用'tabindex' - 从我上面发布的链接: _tabindex =“X”其中X是1 <= X <= 32767的整数 强烈建议作者不要使用这些值。该元素根据tabindex的值放入选项卡序列中。 tabindex值为0的元素和默认可聚焦的元素将在tabindex值为1或更大的元素之后的序列中._ –