APG パターン
ダイアログ(モーダル)パターン
ダイアログは、メインウィンドウ上に表示されるウィンドウで、ユーザーに情報を提示したり入力を求めたりします。モーダルダイアログは背景との操作を遮断します。
キーボード操作
| キー | 動作 |
|---|---|
| Tab | ダイアログ内のフォーカス可能な要素間を移動(フォーカストラップ内) |
| Shift + Tab | ダイアログ内のフォーカス可能な要素間を逆方向に移動 |
| Escape | ダイアログを閉じ、トリガー要素にフォーカスを戻す |
必要な ARIA
ダイアログコンテナ
role="dialog"要素がダイアログであることを示すaria-modal="true"モーダルダイアログであることを示す(背景操作不可)aria-labelledbyダイアログのタイトル要素のIDaria-describedbyダイアログの説明テキスト要素のID(任意)閉じるボタン
aria-label視覚的にラベルがない場合に「ダイアログを閉じる」などを指定ライブデモ
ボタンをクリックしてダイアログを開き、Tabでフォーカスがダイアログ内に閉じ込められることを確認してください。Escapeで閉じられます。
フォーカス管理の要点
1.ダイアログが開いたら、最初のフォーカス可能な要素(通常は最初の入力フィールドまたは閉じるボタン)にフォーカスを移動
2.Tab / Shift+Tab はダイアログ内の要素間のみを循環(フォーカストラップ)
3.ダイアログを閉じたら、ダイアログを開いたトリガー要素にフォーカスを戻す
よくある間違い
- フォーカストラップを実装せず、Tabキーでダイアログ外の要素にフォーカスが移る
- ダイアログを閉じた後にトリガー要素にフォーカスを戻していない
- Escapeキーでダイアログを閉じられない
- aria-modal="true"を設定せず、背景のコンテンツがスクリーンリーダーで読み上げられる
- ダイアログを開いた際に最初のフォーカス可能な要素にフォーカスしない
- role="dialog"を設定していない
フォーカストラップはモーダルダイアログの最も重要な要件です。 これがないと、スクリーンリーダーユーザーがダイアログの外に出てしまい、 背景のコンテンツと意図せず操作する可能性があります。