テクニック C45:CSS の :focus-visible
を用いてキーボードフォーカス表示を提供する
このテクニックについて
このテクニックは 2.4.7: フォーカスの可視化 (十分なテクニック) に関連する。
このテクニックは、CSS をサポートするすべての技術に適用される。
解説
このテクニックの目的は、インタラクティブな要素がキーボードフォーカスを受け取ったときに、カスタムスタイルを提供することである。この例では、CSS の :focus-visible
疑似クラスを用いてこれを実現している。
通常の :focus
疑似クラスで定義されたスタイルは、要素がフォーカスを受け取った方法に関わらず、フォーカスを受け取るたびに適用される。対照的に、ユーザエージェントは、:focus-visible
スタイルを表示するタイミングを決定するために、追加のヒューリスティック及びロジックを適用する ― 特に、ブラウザは利用者がキーボードでナビゲートしている場合は常にこれらのスタイルを表示するが、マウス又はポインタによる操作の場合は通常表示しない (<input>
要素など、キーボード入力もサポートする要素を除く)。これにより、コンテンツ制作者は、必ずしもフォーカス表示を必要としないかもしれない (例えば、視覚的に邪魔だと感じるなど) マウス又はポインタを使用する利用者にフォーカス表示を強制することなく、キーボード利用者に対して、強力な可視のフォーカス表示を提供できる。
これは、キーボードによるフォーカスインジケータが見える操作モード
を提供するという要件を満たしている。
注記
このテクニックは、可視フォーカスインジケータを提供するスタイルを使用している場合にのみ十分である。
注記
マウス又はポインタを使用する利用者が、たとえキーボードを使用して要素にフォーカスを設定していなくても、可視フォーカスインジケータがあることでメリットを得られる場合がある。ベストプラクティスとして、このような場合でも、明示的に :focus
スタイルを提供することを検討されたい。
事例
事例1:CSS :focus-visible
を用いてキーボードフォーカスを提供する
この例では、HTML に標準的な <button>
コントロールがある。
デフォルトでは、全てのモダンなブラウザで、このボタンは、マウス又はポインタを用いてアクティブにしたときにフォーカス表示を示さない。利用者が Tab キーを使用してボタンにフォーカスを設定すると、ブラウザはデフォルトのフォーカスアウトライン又は表示を示す。
このフォーカス表示をさらに目立たせるために、:focus-visible
疑似クラスセレクタを使用して、より意図的で目立つフォーカススタイルを定義する。
動作例: Using CSS :focus-visible
to provide keyboard focus indication.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,
initial-scale=1, shrink-to-fit=no">
<title>Using CSS :focus-visible to
provide keyboard focus indication</title>
<style>
/* Specific :focus-visible styles */
:focus-visible {
outline: 5px solid red;
}
…
</style>
</head>
<body>
…
<button>Example button</button>
…
</body>
</html>
関連リソース
推奨を意味するものではない。
検証
手順
キーボードフォーカスを取得できる各ユーザーインターフェースコンポーネントについて:
- キーボードを使用してインタフェースコンポーネントにフォーカスを設定する (一般的には、Tab 及び Shift+Tab キーを使用してコンポーネントに移動する)。
- コンポーネントがフォーカスを取得したら、フォーカスインジケータが可視であることを検証する。
期待される結果
- チェック 2 が真である。