ふぉーかすとらっぷ
フォーカストラップ (Focus Trap)
UIXHERO Definition
フォーカストラップとは、モーダルやドロワーを開いている間、Tabキーの移動範囲を前面UIの中に保つアクセシビリティ実装。
概要
ダイアログ(モーダル)やドロワーのようなオーバーレイUIを開いた際、Tabキーによるフォーカス移動が一巡すると、背面に隠れているメイン画面のリンクやボタンへフォーカスが「漏れて」しまう問題が発生する。これを防ぐため、モーダル内の最後の要素から次のTabキーで先頭の要素へ戻るように制御する技術。
フォーカストラップは、画面を見て操作するユーザーのためだけではなく、キーボード操作やスクリーンリーダー利用時に「いま操作できる範囲」を明確にするための仕組みでもある。
UXでの活用
- モーダルへの集中: ユーザーの操作文脈を現在のモーダル内に完全に固定し、誤操作による状態の不整合を防ぐ。
- スクリーンリーダー対応: 目が見えないユーザーにとっても、現在操作できる範囲を明示し、予期せぬ画面の移動によるパニックを防止する。
- キーボード操作の予測可能性: Tab / Shift+Tab の移動先をモーダル内に保ち、背面のリンクへ突然移動しないようにする。
誤用・混乱
フォーカストラップは「閉じ込めること」だけが目的ではない。閉じる手段、初期フォーカス、閉じた後のフォーカス復帰まで揃って初めて安全に機能する。 Escキーや閉じるボタンがなく抜け出せない状態は、アクセシビリティを高めるフォーカストラップではなく、ユーザーを閉じ込めるキーボードトラップになる。
💡 使いどころ
Dialog(モーダル)、AlertDialog、Sheet(ドロワー)など、背面画面を一時的に操作対象外にするUIを実装する時。
⚠️ 注意点・誤用
閉じ方、初期フォーカス、閉じた後のフォーカス復帰を用意せずに閉じ込めると、悪い意味でのキーボードトラップになる。
具体例
- モーダル内の最後のボタンでTabを押すと、先頭の閉じるボタンへ戻る
- Shift+Tabで先頭から末尾へ戻り、背面ページには移動しない
- Escキーや閉じるボタンで抜けられ、閉じた後は元の起点へフォーカスが戻る
関連する解説記事
フォーカス管理 (Focus Management)
モーダルを開いたら、フォーカスはどこへ行く?動的UIにおけるフォーカスの制御は、キーボードユーザーとスクリーンリーダーユーザーの「現在地」を守る設計原則。
キーボード操作 (Keyboard Navigation)
マウスが使えなくても、すべての機能が使える——キーボードだけでUIを操作できるかどうかは、運動障害・高齢者・パワーユーザー全員に影響する。WCAGが定めるキーボード操作の設計原則。
Dialog(ダイアログ / モーダル)
ユーザーの作業を中断し、緊急性の高い決定や情報の確認を求めるモーダルウィンドウ。使い所とアクセシビリティ(フォーカストラップ)の設計基準。