Design Pattern

ドロワー

ドロワーは、画面の端からスライドして現れる補助パネルです。ナビゲーションや設定パネルとして便利ですが、モーダルに近い振る舞いになるため、フォーカス管理や Escape キー対応まで含めて設計する必要があります。

難易度: 上級 カテゴリ: ナビゲーション

いつ使う / 使わない

使うべきとき

  • モバイルのナビゲーションや補助メニューを省スペースで提供したい場合
  • 設定パネルやフィルター条件をメイン画面と分離して見せたい場合
  • 一時的な補助 UI を表示し、閉じると元の画面に戻したい場合

使わないべきとき

  • 常時表示してもよい主要ナビゲーションの場合
  • 確認や警告など、より強い注意喚起が必要な場合 → ダイアログを使う
  • 情報量が多すぎて独立ページにした方が分かりやすい場合

構造(Anatomy)

1 トリガーボタン(ドロワーを開く操作)
2 オーバーレイ背景(backdrop)
3 ドロワーパネル(スライドするコンテナ)
4 ヘッダー(タイトル + 閉じるボタン)
5 コンテンツ領域(ナビ、フォーム、情報など)
  1. トリガー — ドロワーを開くボタン。開閉後のフォーカス復帰先になる
  2. オーバーレイ — 背面コンテンツとの分離を示し、クリックで閉じる操作にも使える
  3. パネル — 左右または下からスライドする本体領域
  4. ヘッダー — タイトルと閉じるボタンを持ち、用途を明確にする
  5. コンテンツ領域 — ナビゲーション、設定、補助フォームなどを配置する

HTML 構造

重要なポイント

  • ドロワー本体には role="dialog" とラベル付けを行い、支援技術に用途を伝える
  • 閉じるボタンを常に用意し、視覚的にも明示する
  • 開いたときは最初の操作対象かヘッダーへフォーカスを移す
  • 閉じたときはトリガーボタンへフォーカスを戻す

CSS 実装

スタイル設計のポイント

  • transformtransition でスライドアニメーションを実装する
  • オーバーレイで背面とのレイヤー差を明確にする
  • 幅や高さはビューポート基準で制御し、モバイルでの占有率を調整する
  • 開いている間は背景スクロールを抑止する

アクセシビリティ

WCAG 2.1.1 キーボード

キーボードだけで開閉でき、Escape で閉じられる必要があります。

WCAG 2.4.3 フォーカス順序

開いている間はフォーカスをドロワー内に閉じ込め、閉じたらトリガーへ戻します。

WCAG 4.1.2 名前・役割・値

role とラベル付けで、ドロワーが対話領域であることを明示します。

キーボード操作

  • Enter / Space でトリガーを押して開く
  • Escape で閉じる
  • Tab でドロワー内のフォーカス可能要素を巡回する
  • 閉じたらトリガーにフォーカスが戻る

ライブデモ

左ドロワー

左からスライドインするナビゲーションドロワーです。

右ドロワー

設定パネル向けの右ドロワーバリエーションです。

下ドロワー

モバイルで使いやすいボトムシート型の例です。

よくある間違い

フォーカストラップを実装しない

開いている間に背面へフォーカスが抜けると、キーボード操作が破綻します。

Escape キーで閉じられない

オーバーレイ系 UI では、キーボードによる終了手段を必ず提供する必要があります。

背面コンテンツが操作可能なまま

クリックやスクロールが背面に通ると、状態管理と体験の両方が不安定になります。

状態変化が急すぎる

スライドアニメーションやオーバーレイなしで突然表示すると、出現元が分かりにくくなります。