解説書 達成基準 2.4.11:隠されないフォーカス (最低限) (レベル AA)
要約
- 目標
- フォーカスのある項目を見えるようにしておく。
- 何をすればよいか
- 項目がキーボードフォーカスを取得したときに、その項目が少なくとも部分的に見えることを保証する。
- なぜそれが重要か
- マウスを使用できない人々は、キーボードフォーカスがどこにあるかを確認する必要がある。
意図
この達成基準の意図は、キーボードフォーカスを受け取る項目が、利用者のビューポート内で常に部分的に表示されることを保証することである。キーボード (又はスイッチ、音声入力など、キーボードインターフェースを通じて操作するデバイス) に依存している目の見える人にとって、現在のフォーカス地点を知ることは非常に重要である。フォーカスを持つコンポーネントは、ページ上のインタラクション地点を示す。利用者がフォーカスを持つ項目を見ることができない場合、利用者はどのように進めればよいのかわからない、又はシステムが応答しなくなったとさえ思うかもしれない。
今日の一般的で複雑なレスポンシブデザインのために、この AA 基準は、フォーカスを受け取るコンポーネントが、コンテンツ制作者が作成した他のコンテンツによって部分的に隠されることを許容する。部分的に隠れたコンポーネントは十分な視認性を持つこともあるが、隠される部分が増えるほど見づらくなる。そのため、コンテンツ制作者は、フォーカスを受ける項目が部分的に隠れる程度及び頻度を減らすようにインタラクションを設計するよう努めるべきである。最良の視認性を得るには、フォーカスを受けるコンポーネントが隠されないようにすべきである。この望ましい結果は、AAA 基準の隠されないフォーカス (高度) で扱われる。
フォーカスされた項目と重なる可能性のある代表的なコンテンツの種類は、スティッキーフッター、スティッキーヘッダー、及び非モーダルダイアログである。利用者がページ内をタブで移動すると、これらのコンテンツのレイヤーにより、フォーカスを受け取った項目がフォーカスインジケータと共に隠されてしまう可能性がある。
Cookie バナーのようなスティッキーコンテンツとして実装された通知は、フォーカスを受け取るコンポーネントを完全に覆い隠してしまう場合、この達成基準に失敗する。合格する方法には、利用者がページ内をナビゲートする前にバナーを閉じる必要があるようにバナーをモーダルにする、又はバナーが他のコンテンツと重ならないように scroll-padding を使用する、といったものがある。利用者のアクションを必要としない通知も、フォーカスが失なわれるときに閉じることでこの基準を満たすことができる。
別の隠される状況としては、ライトボックス又はその他の半透明効果がフォーカスを持つ項目に重なる場合がある。不透明度が 100%未満であればコンポーネントが完全に隠れる
ことはないが、そのような半透明の重なりにより 1.4.11 非テキストのコントラストの失敗が発生する場合がある。フォーカスインジケータが半透明コンポーネントで覆われる場合、フォーカスインジケータが半透明コンポーネントの下にある間に、フォーカスインジケータが 1.4.11 に合格できているかを評価する (そして合格している) べきである。この達成方法の意図は、どちらの状況にせよ、利用者がどの項目にフォーカスがあるのか判断できないほどにフォーカスを受け取るコンポーネントが隠されるべきではない、ということである。
利用者が移動可能なコンテンツ
この達成基準には、再配置可能なコンテンツに関する注記が含まれている。利用者がコンテンツ領域を移動できる場合、フォーカスを受ける可能性のある他のコンテンツを隠すように移動可能なコンテンツを配置できる可能性がある。そのような場合、コンテンツ制作者は、初期位置にある移動可能なコンテンツがフォーカスを受け取る項目を隠さないことを保証する責任だけを負う。
この注記は、オーサリングツールのような複雑なアプリケーションでの一般的なインタラクションに対応することを目的としている。ここで、主要な編集領域 (キャンバスとも呼ばれる) は、ツールバー又はその他のパネルを表示することで拡張でき、キャンバスの周囲に再配置できる。そのようなツールバーがフォーカスを隠さないように設計することは可能である。コンテンツ制作者は、そのようにするだけでなく、そのようなツールバーをキーボードでも等しく使用できることを保証する技術を追求することが奨励される。ただし、レスポンシブデザインに伴う複雑さ、並びにコンテンツのテキストサイズ及び間隔を変更する機能のサポートを考慮して、そのような移動可能なパネルの開始位置だけが評価の対象となる。
利用者が開いたコンテンツ
この達成基準には、利用者が開いたコンテンツに関する注記が含まれている。そのようなコンテンツの一つの例は、画面上の既存のコンテンツの上に選択肢のリストを展開する、利用者によって開かれるメニューボタンである。そのようなコンテンツは画面上の他の情報を隠してしまう可能性があるが、フォーカスの変更によって新しいコンテンツが開いたままになることはないため、キーボードフォーカスを受け取る項目は隠すことはない。ただし、コンテンツ制作者は、チャットウィンドウなど、利用者が閉じるまで保持されるように意図的に設計された、利用者が開いたコンテンツを作成する場合がある。そのような永続的なコンテンツは、隠されないフォーカス (最低限) に失敗する可能性がある。次のサブセクションではさまざまな種類について説明する。全て、この達成基準を満たせるように設計できる。
このセクションは、利用者が主体的に開いたコンテンツにだけ適用される。コンテンツ制作者によって事前に配置されたコンテンツ (スティッキーフッターなど)、又は利用者が直接開始することなく表示されるコンテンツ (システム警告など) は、フォーカスを受け取った項目がビューポートにすぐに表示されるのを妨げてはならない。この注記はまた、慣例による永続的でないディスクロージャーに適用することを意図したものではない。次のサブセクションで説明するように、フォーカスが外されても閉じない、開いているドロップダウンは、この慣例に従っていない。
永続的でなく開かれた情報
ウェブ上の多くのコンポーネントは、即時的な利用者による操作又は情報提示を目的とした追加コンテンツを (アクティブ時又はフォーカス時に) 開く (又は展開する)。この新しいコンテンツは他のコンテンツの上にあり、隠すことがよくある。このようなコンポーネントの例としては、メニュー項目、select 要素の項目、コンボボックスリスト (及びその他のドロップダウン項目)、日付ピッカーカレンダー、ツールチップなどがある。これら全てのコンポーネントに共通する特徴は、アクションが実行された後、または利用者の操作の主要なポイントでなくなった後は、それらのコンポーネントが存続することが期待されていないことである。そのような永続的でないディスクロージャーは、フォーカスを当てた項目を隠さないため、この達成基準に失敗とはならない。ただし、利用者が 1) 開いている項目の一つをアクティブにした後、又は 2) フォーカスをトリガー項目及び追加コンテンツから遠ざけた後に、コンテンツ制作者がそのようなコンポーネントの存続を許可した場合、フォーカスを持つ項目を隠すことによって、この基準に失敗する危険性がある。
利用者が開くことができる、永続的なディスクロージャー
一部のディスクロージャーパターンでは、利用者が意図的に閉じるまで開いたままになる追加コンテンツを利用者が開くメカニズムを提供する。アコーディオンは、そのようなパターンの単純な例である。チャットボット及び拡張可能なサイドナビゲーションは、より複雑な例である。これらのパターンはすべて、この達成基準に失敗するリスクがないように実装できる。考えられるアプローチとしては次のようなものがある:
- 追加のコンテンツが表示されると、既存のコンテンツが移動する。アコーディオンはその一例である。アコーディオンを開くと、展開されたコンテンツが既存のコンテンツをページのさらに下に移動させる。新しいコンテンツは既存のコンテンツを隠さないため、フォーカスのある項目を隠すことはできない。
- 追加コンテンツが表示されると、既存のコンテンツがリフローする。WCAG 標準のポップアウトサイドバーは、このパターンの例である。サイドメニューをアクティブにすると、ページの左側に沿って情報の新しいセクションが開く。メインコンテンツ領域は、新しいコンテンツを収容するために水平方向に縮小され、既存のコンテンツはより狭いスペースに収まるようにリフローする。結果として、二つのセクション間に重なるコンテンツは存在しない。フォーカスを受け取る項目は、左側のナビゲーションであろうとメインコンテンツであろうと、他のセクションによって隠されることはないだろう。
- 追加コンテンツが開かれるとフォーカスが移り、閉じられるまでの間、タブリングはその追加コンテンツに閉じ込められる。このモダリティはダイアログに少し似ており、キーボードでは、利用者が先に (典型的には Esc キーを押して) コンテンツを閉じないかぎり、開いているコンテンツを超えてナビゲートすることはできない。しかし、モーダルダイアログとは異なり、実装によっては、ポインタの利用者は、開かれたセクションを閉じることなく外側のコンテンツを操作できる場合がある。このパターンはキーボードの利用者とポインタの利用者との間で不公平な体験を生み出す可能性があるため、慎重に使用すべきである。とはいえ、開かれたコンテンツがメインコンテンツのキーボードフォーカスを隠してしまうのを防いでおり、したがって、この達成基準を合格するはずである。これは、関連リソースにある Knowability の記事において、セクション見出し Keep keyboard focus in the slide-out navigation until it's closed にある短い動画で説明及び実演されている。
- ディスクロージャーは、他のコンテンツを含まないページの領域に展開する。多くのページは余白が広く設計されており、新しいコンテンツを開くための大きなスペースが提供されている。多くのチャットボット及びトースト通知は、ページの空いている右側に「上にスライド」するように設計されている。コンテンツ制作者がレスポンシブデザインの各ブレークポイントでコンテンツが隠されないように注意している場合、他の操作可能なコンテンツが隠されることはない。
- フォーカスが追加コンテンツから離れると、追加コンテンツは自動的に非表示になる又は折りたたまれる。もしくは、専用のキーボードコマンド (例: Escape キー) を使用してコンテンツを非表示にする又は折りたたむことができる。これは、前述の永続的でない開いている情報で説明したパターンと非常によく似ている。特徴的な要因は、たとえ利用者が戻るまで非表示になっているとしても、ディスクロージャー内での利用者のインタラクションの最終地点が保存される (存続する) ことである。一部のツリー及び左側のナビゲーションパターンはこのように動作する。
より複雑なインタフェース及び利用者のニーズのために、次の注記がある: 利用者が開いたコンテンツによって、フォーカスを受け取るコンポーネントが隠される場合がある。利用者がフォーカスを持つ項目を表示でき、その際に利用者の開いたコンテンツにナビゲートしてその項目を閉じる必要がなければ、この基準に合格する。例えば、フォーカスを持つ項目を表示できるキーボード操作には、次のものがある:
- Escape キーを使用して、隠しているコンテンツを閉じる。
- キーを使用してビューポート内のコンテンツをスクロールし、フォーカスのある項目を表示する。
- オーバーレイ間を移動するためのキーを用意する。
例:
- 利用者は、チャットインタフェースを開く。これはポップオーバーの非モーダルダイアログである。これにより、下にあるページの一部のコンテンツが完全に隠されてしまう。利用者は Tab キーを使用してチャットインタフェースから離れ、ダイアログによって完全に隠されているリンクにフォーカスを当てる。利用者が Escape キーを押してチャットインタフェースを閉じると、リンクが隠されないようになる。
- 利用者は、ウェブページの下部にある固定位置のページフィードバックコンポーネントを展開する。次に、キーボードを使用して、展開されたコンポーネントによって完全に隠されているリンクにナビゲートし、キーボードの下矢印又はスペースキーを押してページ上のコンテンツをスクロールし、リンクが隠されないようにする。
- 利用者がウェブベースのマルチユーザオーサリングアプリケーションを開く。ドキュメントに貢献した人のリストを表示しているオーバーレイが表示される。利用者は貢献者のリストをタブで移動し、そのうちの一つをアクティブにする。アプリケーションは、最初のオーバーレイを隠す、その人の最近の投稿を表示する新しいオーバーレイを表示する。利用者は F6 キーを押して、二つのオーバーレイの積み重ね順序を切り替える。
モーダルダイアログ
適切に構成されたモーダルダイアログは、常にこの達成基準に合格する。たとえフォーカスを持つ項目の上に直接表示されたとしても、表示された際にこのダイアログがフォーカスを受け取り、したがってフォーカスを受け取っている項目 (このダイアログ、又はその中のコンポーネントの一つ) は表示される。適切に構成されたモーダルは、そのフォーカスを維持し、モーダルが閉じられるまでモーダル外のインタラクションを防ぐ。
ダイアログのようなオーバーレイが、表示された際にフォーカスを受け取らず、かつオーバーレイに対してインタラクションを制限しない、又はフォーカスを失ったときに自身を閉じない (したがって、フォーカスが背後のコンテンツに抜けるようになる) 場合に、他のフォーカス可能な項目を隠すことができるように配置されていると、この達成基準で失敗する危険性がある。
利点
- キーボードインタフェースに依存してページを操作している目の見える利用者は、キーボードフォーカスを取得するコンポーネントを見ることができる。そのような利用者には、キーボード又はキーボードインタフェースを利用するデバイス (音声入力、呼気・吸気ソフトウェア、オンスクリーンキーボード、スキャンソフトウェア、並びにさまざまな支援技術及び代替キーボードなど) に依存するような利用者が含まれる。
- 視覚に制限のある人々又はロービジョンの人々は、主に画面上の位置取り及び移動にポインタを使用するが、それにもかかわらず、キーボード操作による現在位置の可視的な表示は、特に拡大率によって画面全体の表示視野が狭くなる場合、有益である。
- 注意力の制限、短期記憶の制限、又は実行プロセスの制限がある人々は、フォーカスがどこにあるのかを発見できることで恩恵を受ける。
事例
- ページにスティッキーフッター (ビューポートの下部に固定されている) がある。ページをタブで下に移動すると、フォーカスされた項目はフッターによって視覚的に完全に隠れることはない。これは、ビューポート内のコンテンツが上にスクロールして、scroll-padding を使用してキーボードフォーカスのある項目が常に表示されるためである。
- ページに全幅のクッキー承認ダイアログがある。ダイアログはモーダルであり、閉じられるまでページ内の他のコントロールへのアクセスを防ぐ。クッキー承認ダイアログの大部分は (選択が行われて送信されるまで) 画面上に残り、キーボードフォーカスインジケータの大部分も表示されたままになるため、フォーカスは隠されない。
- 通知はスティッキーヘッダーとして実装され、キーボードフォーカスは通知に移動するため、少なくともフォーカスインジケータの一部が表示される。フォーカスを失うと通知は消えるため、他のコントロールが隠れることはなく、以前のキーボードフォーカスインジケータの一部が表示される。
関連リソース
リソースは、情報提供のみを目的としており、推奨を意味するものではない。
テクニック
この節にある番号付きの各項目は、WCAG ワーキンググループがこの達成基準を満たすのに十分であると判断するテクニック、又は複数のテクニックの組み合わせを表している。しかしながら、必ずしもこれらのテクニックを用いる必要はない。その他のテクニックについての詳細は、WCAG 達成基準のテクニックを理解するの「その他のテクニック」を参照のこと。
十分なテクニック
失敗
次に挙げるものは、WCAG ワーキンググループが達成基準の失敗例とみなした、よくある間違いである。
重要な用語
コンテンツの一部分で、特定の機能を実現するための単一のコントロールとして利用者が知覚するもの。
注記
複数のユーザインタフェース コンポーネントが、単一のプログラム要素で実装されることもある。ここでいう「コンポーネント」は、プログラムの手法と結びついたものではなく、利用者が別々のコントロールとして知覚するものを指す。
注記
ユーザインタフェース コンポーネントには、フォーム要素、リンクだけでなく、スクリプトで生成されるコンポーネントが含まれる。
注記
ここでの「コンポーネント」又は「ユーザインタフェース コンポーネント」は、「ユーザインターフェース要素」とも呼ばれる。