WCAG 2.0 では:focus
、リンク要素でwhen:hover
を使用してキーボード ナビゲーションをサポートすることも推奨しています。これは link 要素ではうまく機能しますが、この 2 つにはいくつかの違いがあります。
- どの要素も
:hover
状態を持つことができますが、フォーカスできる要素はごくわずかです - 要素にカーソルを合わせると、そのすべての親要素にもカーソルを合わせます。これはフォーカスの場合ではありません
この質問は、厳密には css に関するものです。:hover
キーボード ナビゲーションのために (上記のように)の動作をシミュレートする方法はありますか? それとも、それを望まない強い理由がありますか?
より明確にするために、例を次に示します。
html:
<div id="box">
foo bar
<a href="#">click me</a>
</div>
CSS:
#box {
opacity: 0.3;
}
#box:hover {
opacity: 1;
}
#box a:focus {
opacity: 1;
}
マウスを使用するときは、使用する前にリンク要素にカーソルを合わせます。:hover
状態が上向きに伝播するため、#box
完全に不透明になります。
キーボードを使用するときは、使用する前に link 要素にフォーカスします。:focus
状態は上方に伝播しないため、完全に不透明にはなりません。#box