タブ移動するときは、それ自体ではなく、anchor
内部に焦点を合わせます。.main-menu li
list-item
次の 2 つの回避策があります。
a)+
セレクターの使用
.main-menu li a:focus + ul {
display: block;
}
ただし、これにより、他のアンカーへのタブ移動が問題になります (タブを押すと、サブメニューの最初のアンカーに移動するはずですが、非表示になるため、何も起こりません)。
b)tabindex
プロパティの使用
tabindex
これには、メニュー アンカーを負の値に設定し (タブ移動から削除)、タブ移動をリスト項目に設定する必要があります。
tabindex デモの使用を参照してください
赤い背景を表示するには、アンカーとリスト項目のスタイルを変更して、新しいセレクターを追加する必要があります。
.main-menu li a:hover,
.main-menu li a:focus,
.main-menu li.dropped > a,
.main-menu li:focus > a /* this one was added */ {
/* your styles */
}
ただし、フォーカスされたリスト項目は、キーボードを使用してアンカーにアクセスできないことを意味するため、これは実際には良い方法ではありません。JavaScript を使用してイベントをシミュレートできます (リスト項目のキープレスをアンカーをクリックするようにバインドします)。jQuery では、次のようになります。
$('li[tabindex]').on('keypress', function() {
$(this).find('a').click();
});
イベント シミュレーションのデモで tabindex を使用するを参照してください。
最上位のアンカーにアクションがない (ドロップダウン目的でのみ使用される) 場合、これは問題ではありません。その場合、アンカーはまったく必要ありません。