ドロップダウン(アクションメニュー)

クリックで開くアクションメニューの実装比較。グループ化・アイコン付き・ネスト構造など実践的なパターンをインタラクティブに確認できます。

💡 値を選ぶセレクトボックス・コンボボックスをお探しの場合はセレクトボックス・コンボボックスページ →
💡 ネイティブ実装: HTML popover 属性でもドロップダウン的なポップオーバーを実装できます。 ネイティブポップオーバー(popover)

ライブラリ比較

項目MantineAnt Designshadcn/uiChakra UIMUICSS カスタム
アクションメニュー✅ Menu(Target/Dropdown)✅ Dropdown(items配列)✅ DropdownMenu(Radix UIベース)✅ Menu(Root/Trigger/Content)✅ Menu + MenuItem⚠️ 自作コンポーネント
メイン+メニューボタン⚠️ 手動で構成✅ Space.Compact統合⚠️ 手動で構成⚠️ 手動で構成⚠️ 手動で構成⚠️ 手動で構成
danger アイテム✅ color="red"✅ danger prop✅ variant="destructive"✅ color="red.500"✅ sx={{ color: 'error.main' }}✅ dangerフラグ
disabled アイテム✅ disabled prop✅ disabled prop✅ disabled prop✅ disabled prop✅ disabled prop✅ disabled フラグ
グループ化 / ラベル✅ Menu.Label✅ type: 'group'✅ DropdownMenuGroup✅ Menu.ItemGroup✅ ListSubheader⚠️ 手動レンダリング
表示位置制御✅ position 12方向✅ placement 8方向✅ side / align✅ placement prop✅ anchorEl + anchorOrigin⚠️ CSS で手動
アクセシビリティ✅ WAI-ARIA準拠✅ WAI-ARIA準拠✅ 自動(Radix UI)✅ WAI-ARIA準拠✅ WAI-ARIA準拠⚠️ 手動対応が必要
バンドルサイズ⚠️ 中(全体で大)⚠️ 中(全体で大)✅ 使った分だけ⚠️ 中(emotion含む)⚠️ 中(Emotion込み)✅ ゼロ追加

選択のポイント

  • Mantine — Menu の Target/Dropdown コンポジション API が直感的で柔軟。 position で12方向の表示位置を制御でき、グループ化・danger・disabled・withArrow も 標準サポート。Mantine を採用しているプロジェクトなら統一感を保ちながら使いやすい。
  • Ant Design — Space.Compact と組み合わせることでメインアクション+メニューを1セットで実現できる点が便利。 items 配列による宣言的な定義で可読性が高く、danger・disabled・グループ化も items レベルで設定できる。 trigger で click・hover・contextMenu を切り替えられる柔軟さも特徴。
  • Chakra UI — Menu.Root / Trigger / Content の複合コンポーネントパターンで構成。 Portal で DOM 外にレンダリングするため z-index の問題が起きにくい。 asChild prop で任意の要素をトリガーにできる柔軟性がある。
  • MUI — 週670万DLと圧倒的なシェアを誇るMaterial Design準拠のライブラリ。anchorEl でメニュー表示位置を 制御し、sx prop でスタイルをきめ細かく調整できる。エンタープライズ〜スタートアップまで幅広く採用され、 ドキュメントや事例が豊富。
  • shadcn/ui — Radix UI ベースでアクセシビリティが高く、キーボード操作・スクリーンリーダー対応が標準装備。 DropdownMenuCheckboxItem や RadioItem など、メニュー内の状態管理も宣言的に書ける。 コードが手元にあるため、スタイルの完全カスタマイズが可能。
  • CSS カスタム — デザインを完全にコントロールしたい場合や外部ライブラリを避けたい場合に最適。 useClickOutside・開閉アニメーション・グループ化・danger を自前実装するため学習コストはあるが、 デザインシステムへの完全準拠・軽量化を優先する場面では選ぶ価値がある。

ドロップダウンメニューは、ボタンやリンクをクリック・ホバーすると選択肢のリストが展開するUIコンポーネント。コンテキストメニューとも呼ばれる。

ナビゲーションのサブメニュー・「…」メニューのアクション一覧・テーブル行の操作メニュー・フィルター選択など、限られたスペースに複数のアクションを格納する場面で使われる。

主なバリエーション
  • 基本ドロップダウン型
  • アイコン付き型
  • 区切り線付き型
  • ネストメニュー型(サブメニュー)
  • コンテキストメニュー型(右クリック)