キーボード アクセスの基礎

一時的または永続的な運動機能障がいのあるユーザーから、キーボード ショートカットを使用して効率と生産性を高めるユーザーまで、さまざまなユーザーがキーボードを使用してアプリを操作しています。アプリに適切なキーボード ナビゲーション戦略を用意すると、すべてのユーザーにとってエクスペリエンスが向上します。

フォーカスとタブ順序

特定の時点でのフォーカスとは、現在キーボードからの入力を受信しているアプリ内の要素(フィールド、チェックボックス、ボタン、リンクなど)を指します。フォーカスのある要素は、キーボード イベントを受信するだけでなく、クリップボードから貼り付けられたコンテンツも受け取ります。

ページ内でフォーカスを移動するには、TAB を使用して「前方」に移動し、SHIFT + TAB を使用して「後方」に移動します。現在フォーカスされている要素は、多くの場合フォーカス リングで示されます。フォーカス リングのスタイルはブラウザによって異なります。フォーカスがインタラクティブな要素を前後に移動する順序は、タブオーダーと呼ばれます。

テキスト フィールド、ボタン、選択リストなどのインタラクティブな HTML 要素は、暗黙的にフォーカス可能です。つまり、DOM 内の位置に基づいてタブオーダーに自動的に挿入されます。これらのインタラクティブな要素には、キーボード イベント処理も組み込まれています。段落や div などの要素は、通常ユーザーが操作する必要がないため、暗黙的にフォーカス可能ではありません。

論理的なタブ順序を実装することは、ユーザーにスムーズなキーボード ナビゲーション エクスペリエンスを提供するうえで重要な要素です。タブ順序を評価して調整する際には、次の 2 つの主なポイントに注意してください。

  1. DOM 内の要素を論理的な順序で配置する
  2. フォーカスを受け取らない画面外コンテンツの可視性を正しく設定

DOM 内の要素を論理的な順序で配置する

アプリケーションのタブ順序が論理的かどうかを確認するには、ページをタブで移動してみてください。一般的に、フォーカスは読み取り順に、左から右、ページの上から下に移動する必要があります。

フォーカス順序が正しくないと思われる場合は、DOM 内の要素を並べ替えて、タブ順序をより自然にする必要があります。画面上で視覚的に先頭に表示したい場合は、DOM 内で先頭に移動します

以下の 2 つのボタンセットをタブで移動して、論理的なタブ順序と非論理的なタブ順序を比較してみましょう。

論理タブ順序

タブ順序が不合理

次の 2 つの例のコードは以下のように比較されます。

論理タブ順序

<button>Kiwi</button>
<button>Peach</button>
<button>Coconut</button>

タブ順序が不合理

<button style="float: right">Kiwi</button>
<button>Peach</button>
<button>Coconut</button>

CSS を使用して要素の視覚的な位置を変更する場合は注意が必要です。不合理なタブ順序が作成されないようにしてください。上記の不合理なタブ順序を修正するには、フローティングの「Kiwi」ボタンを DOM 内の「Coconut」ボタンの後に移動し、インライン スタイルを削除します。

画面外コンテンツの可視性を正しく設定する

画面外にあるインタラクティブな要素を DOM に含める必要がある場合でも、タブ順序に含めない場合があります。たとえば、ボタンをクリックすると開くレスポンシブ サイドナビがある場合、サイドナビが閉じているときにユーザーがサイドナビにフォーカスできないようにする必要があります。

特定のインタラクティブ 要素にフォーカスが当たらないようにするには、その要素に次のいずれかの CSS プロパティを指定する必要があります。

  • display: none
  • visibility: hidden

サイドナビが開いているときなど、要素をタブ順序に再度追加するには、上記の CSS プロパティをそれぞれ次のように置き換えます。

  • display: block
  • visibility: visible

次のステップ

パソコンの操作をほぼすべてキーボードまたは他の入力デバイスで行うユーザーの場合、アプリをアクセス可能で使いやすくするには、論理的なタブ順序が不可欠です。タブオーダーを確認する習慣として、公開する前にアプリ上をタブで移動することをおすすめします。