Dropdown
Dropdownは、トリガー要素をクリックすると表示されるフローティングメニューです。 アクション一覧、チェックボックス、ラジオ選択、サブメニューをサポートします。
5
Item Types
3
Sizes
Sub
Nested
Radix
Base
Playground
Preview
bottomcentermenu-r=mdbtn-r=default
Button
Size
Icon
Radius
Press Effect
Items
Radius
Flush
Items
Side
Align
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline"
rightIcon={<ChevronDown />}>Menu</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuItem>Profile</DropdownMenuItem>
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Log out</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>Variants
Basic
最もシンプルなメニュー。アクション一覧を表示。
コンテキストメニュー
Label + Group
ラベルとグループで関連アクションを整理。
アカウントメニュー
Checkbox
チェックボックスで複数項目のON/OFF切替。
表示設定、フィルター
Radio
ラジオで排他的な単一選択。
密度、テーマ選択
Submenu
ネストされたサブメニューで階層的なアクション。
共有、エクスポート
Sizes
smパディング6px 8px
アイテムフォント12px
mdパディング6px 8px
アイテムフォント13px
lgパディング10px 12px
アイテムフォント14px
| Size | パディング | アイテムフォント | プレビュー |
|---|---|---|---|
sm | 6px 8px | 12px | |
md | 6px 8px | 13px | |
lg | 10px 12px | 14px |
API
Component Structure
DropdownMenu— Radix DropdownMenu.Trigger.ContentProps.ItemProps.CheckboxItem.RadioGroup.RadioItem.Label.Separator.Group.Sub.SubTrigger.SubContent.Shortcut
.Triggerトリガー要素.ContentPropsメニューパネル(radius・flush・size).ItemPropsメニューアイテム(inset対応).CheckboxItemチェックボックス付きアイテム.RadioGroupラジオ選択グループ.RadioItemラジオ付きアイテム.Labelグループラベル.Separator区切り線.Groupアイテムグループ.Subサブメニュールート.SubTriggerサブメニュートリガー.SubContentサブメニューパネル.ShortcutショートカットヒントProps
DropdownMenuContent
size"md""sm" | "md" | "lg"メニューアイテムのサイズ
radius"md""md" | "lg" | "xl"コンテンツとアイテムの角丸(Itemは自動計算)
flushfalsebooleanアイテムをフル幅で表示(内側パディングなし)
side"bottom""top" | "right" | "bottom" | "left"メニューの表示方向
sideOffset4numberトリガーからの距離 (px)
align"center""start" | "center" | "end"トリガーに対するアライメント
alignOffset0numberアライメントのオフセット (px)
loopfalsebooleanキーボードナビゲーションのループ
| Name | Type | Default | Description |
|---|---|---|---|
size | "sm" | "md" | "lg" | "md" | メニューアイテムのサイズ |
radius | "md" | "lg" | "xl" | "md" | コンテンツとアイテムの角丸(Itemは自動計算) |
flush | boolean | false | アイテムをフル幅で表示(内側パディングなし) |
side | "top" | "right" | "bottom" | "left" | "bottom" | メニューの表示方向 |
sideOffset | number | 4 | トリガーからの距離 (px) |
align | "start" | "center" | "end" | "center" | トリガーに対するアライメント |
alignOffset | number | 0 | アライメントのオフセット (px) |
loop | boolean | false | キーボードナビゲーションのループ |
DropdownMenuItem
disabledundefinedboolean無効状態
onSelectundefined(event: Event) => void選択時のコールバック
insetundefinedboolean左に余白を追加(アイコン揃え用)
| Name | Type | Default | Description |
|---|---|---|---|
disabled | boolean | undefined | 無効状態 |
onSelect | (event: Event) => void | undefined | 選択時のコールバック |
inset | boolean | undefined | 左に余白を追加(アイコン揃え用) |
Customization
classNameでコンテンツやアイテムのスタイルをカスタマイズできます。
幅の変更
<DropdownMenuContent className="w-56">危険アクションの強調
<DropdownMenuItem className="text-text-error focus:text-text-error">Tip:各サブコンポーネントはclassNameを受け取り、Tailwindクラスでスタイルを上書きできます。
Dropdown vs Select
見た目は似ていますが、用途と動作が異なります。適切なコンポーネントを選択してください。
用途
Dropdown: アクションの実行
Select: 値の選択
フォーム連携
Dropdown: なし
Select: name / value 送信可能
選択後の表示
Dropdown: メニューが閉じるだけ
Select: 選択値がトリガーに反映
アイテム種類
Dropdown: Item, Checkbox, Radio, Sub
Select: 単一選択アイテム
ユースケース
Dropdown: コンテキストメニュー、アカウント操作
Select: 国選択、カテゴリー、ソート順
| 特徴 | Dropdown | Select |
|---|---|---|
| 用途 | アクションの実行 | 値の選択 |
| フォーム連携 | なし | name / value 送信可能 |
| 選択後の表示 | メニューが閉じるだけ | 選択値がトリガーに反映 |
| アイテム種類 | Item, Checkbox, Radio, Sub | 単一選択アイテム |
| ユースケース | コンテキストメニュー、アカウント操作 | 国選択、カテゴリー、ソート順 |
選択の目安:ユーザーが値を選んでフォームに送信する場合は Select を使用してください。 クリック時にアクション(編集、削除、共有など)を実行する場合は Dropdown が適切です。