我看到了一些解決方案,但我無法弄清楚如何將這些解決方案放在我的代碼中,或者某些解決方案使用了某些我無法在我的項目中使用的解決方案。我怎樣才能使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或更大的元素之後的序列中._ –