Skip to content
Component

Dropdown Menu

Click-triggered menu (wraps Base UI Menu).

Basic

When to use

  • A short, known list of actions tied to a single trigger - a user avatar's menu, a row's "more actions" button, a toolbar overflow.

When not to use

  • Site navigation with hover-revealed content panels - use Navigation Menu instead.
  • A right-click-triggered menu - use a visible Dropdown Menu trigger instead so the action also works on touch devices.
  • A long, searchable action list - Command Menu's filtering is a better fit past a handful of items.

Keyboard

KeyAction
Enter / Space / ArrowDownOpens the menu from the trigger.
ArrowUp / ArrowDownMoves the highlighted item.
EnterActivates the highlighted item.
EscapeCloses the menu and returns focus to the trigger.

Mobile behavior

  • Opens on tap identical to desktop click - no separate touch affordance needed.
  • Items keep a minimum touch-friendly height so a dense menu doesn't produce mis-taps on small screens.

Accessibility notes

  • Base UI applies role="menu"/"menuitem" with a roving tabindex, so only one item is a Tab stop at a time.
  • DropdownMenu.Separator is exposed with role="separator" so it's skipped by item navigation but still structurally present for screen readers.

Common mistakes

  • Putting a form control (checkbox, input) inside a plain DropdownMenu.Item instead of using the dedicated checkbox/radio item variants where available - plain items commit and close on selection.
  • Triggering it from a non-button element without forwarding the render prop correctly, which drops keyboard support.

Related components

DropdownMenu.Content props

align"start"
"start" | "center" | "end"

Horizontal alignment against the trigger.

classNameNone
string

Extra classes merged onto the menu surface.

CriterionStatusNote
Keyboard supportSupportedArrow-key roving tabindex, Enter to activate, Escape to close.
Focus managementSupportedFocus returns to the trigger on close.
Screen reader labelsSupportedrole="menu"/"menuitem" applied by Base UI automatically.
Reduced motionSupportedprefers-reduced-motion: reduce zeroes all Fuji transition durations globally.
Reduced transparencySupportedprefers-reduced-transparency: reduce flattens Glass to opaque surfaces (portals included).
RTL layoutPartialLogical flex/grid gap works under dir="rtl"; directional chevrons are not yet mirrored.

API reference

native propsNone
HTML attributes

Use Trigger, Content, Item, Separator, and related compound parts.

classNameNone
string

Additional classes applied to the component root.