これはタイムリーな回答ではありませんが、同じ質問をグーグルで調べて独自の解決策を思いついたので、投稿すると思いました:
1) ナビゲーション内のすべてのリンクに tabindex=0 を追加します
2) CSS 内のすべてのホバーには、同等のフォーカス セレクターが必要です。また、ホバー クラスを追加して、javascript を使用していつポップアウトするかを指示できるようにする必要があります。メニューを表示するためにこれをcssに追加しました(スタイリングに相当する追加のコードも入力する必要があります-ホバースタイリングにはフォーカススタイリングが必要ですが、私のスタイルはカスタマイズされているため、スタイルを投稿したくありません):
.top-bar-section .has-dropdown.hover > .dropdown,
.top-bar-section .has-dropdown.not-click:focus > .dropdown,
.no-js .top-bar-section .has-dropdown:focus > .dropdown,
.dropdown.hover
{
display: block; }
3)cssで作成した「ホバー」クラスを取得し、フォーカスが変更されたときに追加および削除するjavascriptを追加しました。このサイトを参考にしましたhttp://uablogs.missouri.edu/interface/2011/08/keyboard-accessible/
$(document).ready(function(){
$.fn.accessibleDropDown = function ()
{
var el = $(this);
/* Make dropdown menus keyboard accessible */
$("a", el).focus(function() {
if($(this).parent().hasClass('has-dropdown')){
$(this).parent().find('.dropdown').addClass('hover');
}
else if(($(this).parent().parent().hasClass('dropdown') === false)){
$(document).find('.dropdown').removeClass('hover');
}
}).keydown(function(e){
//if tab is pressed but not shift
if(e.keyCode == 9 && !e.shiftKey){
//and element is the last child in menu
if($(this).parent().is(':last-child')){
$(this).parent().parent().removeClass('hover');
}
}
});
}
//adds keyboard control to navigation
$('nav').accessibleDropDown();
$(document).click(function(){
//if someone uses keyboard and switches to mouse close menu if mouse click isn't focused on a navigation element
if($('nav a').is(':focus') === false){
$('.dropdown').removeClass('hover');
}
});
});
タブキーとシフトタブキーでキーボードからアクセスできるようになりました。スキップナビ IMO の追加を使用できます。