私はクロスアプリケーションスタイルガイドを再定義している最中です。コントラスト比、テキストサイズ、フォーカス状態など、デザインのアクセシビリティを考慮していることを確認したいと思います。私を悩ませている1つの問題は、ボタンや入力などの:focus状態をマウスの:hover状態と同じにする必要があるか、またはレイヤー化できるように区別する必要があるかどうかです。それらを分離する必要がある、または分離してはならない理由をいくつか教えてください。
マウスオーバーまたは:hover
状態は、より直接的な相互作用です(つまり、ユーザーはクリックしたいボタンの上でマウスカーソルを直接制御しています)
一方、:focus
状態では、現在ターゲットになっているコンポーネントを特定するために、ページ全体を個別にスキャンする必要があります。たとえば、ユーザーがTAB
キーを数回押して、フォーカス四角形がアクセスしたいリンク、ボタン、またはその他の入力に到達するか、ENTER
キーを押して「クリック」します。ユーザーがTAB
キーの押下をいつ停止するかを認識し、フォーカスされたターゲットと自信を持って対話できるように、現在フォーカスがあるアイテムは明確である必要があります。ユーザーが見つけやすいフォーカスされたボタンの周りにある種の長方形を配置するのが一般的です。
ホバーイベントの場合、マウスカーソル自体がこの役割を果たすため、フォーカスの四角形は必要ありません。
正直なところ、あなたの:hover状態と:focus状態が、どのアイテムにアクションが実行されるかを正確に示している限り、それらを個別にスタイルする理由はわかりません。 :focusは基本的にキーボードホバーです。
:focus要素の周りにはボックスを含める必要があると前の答えは正解ですが、outlineプロパティが非表示になっていない限り、問題にはなりません。
個別にスタイリングする価値があるのは、ユーザーが直接操作せずにアイテムに自動フォーカスしている場合のみです。