Evo Web
  • Components
  • Accessibility
  • Guides

Site Menu

Main Navigation
Components
Accessibility
Guides
  • Components
  • Accessibility
  • Guides
  • Github Repo
  • Accordion
  • Alert Dialog
  • Avatar
  • Badge
  • Breadcrumbs
  • Button
  • Calendar
  • Card
  • Carousel
  • Ccd
  • Chart Legend
  • Checkbox
  • Chip
  • Chips Combobox
  • Combobox
  • Confirm Dialog
  • Date Textbox
  • Details
  • Donut Chart
  • Education Notice
  • Eek
  • Field
  • File Input
  • File Preview Card Group
  • File Preview Card
  • Filter Chip
  • Filter Input
  • Flag
  • Floating Label
  • Global
  • Icon Button
  • Icon
  • Image Placeholder
  • Infotip
  • Inline Notice
  • Item Tile Group
  • Item Tile
  • Layout Grid
  • Lightbox Dialog
  • Link
  • List
  • Listbox Button
  • Listbox
  • Marketsans
  • Menu Button
  • Menu
  • Number Input
  • Page Grid
  • Page Notice
  • Pagination
  • Panel Dialog
  • Phone Input
  • Progress Bar Expressive
  • Progress Bar
  • Progress Spinner
  • Progress Stepper
  • Radio
  • Sass
  • Section Notice
  • Section Title
  • Segmented Buttons
  • Select
  • Selection Chip
  • Signal
  • Skeleton
  • Snackbar Dialog
  • Split Button
  • Star Rating Select
  • Star Rating
  • Switch
  • Table
  • Tabs
  • Textbox
  • Toast Dialog
  • Toggle Button Group
  • Toggle Button
  • Tokens
  • Tooltip
  • Tourtip
  • Typography
  • Utility
  • Accessibility Docs

  • Patterns

    • Description List
    • Fake Menu Button
    • Fake Tabs
    • Footnote
    • Form
    • Form Validation
    • Heading
    • Image
    • Input Dialog
    • Input Meter
    • Input Validation
    • Popover
    • Pulldown List
    • Region
    • Skip Navigation
    • Table Cell
    • Time
  • Anti Patterns

    • Disabling Pinch To Zoom
    • Hand Cursor On Buttons
    • Javascript Href
    • Layout Table
    • Non Interactive Hover
    • Open New Window
    • Setting Focus On Page Load
    • Tabindex Itis
    • Title Tooltip
  • Techniques

    • Active Descendant
    • Alternative Text
    • Ambiguous Label
    • Background Icon
    • Keyboard Interface
    • Keyboard Trap
    • Live Region
    • Offscreen Text
    • Roving Tabindex
    • Skip To Main Content
  • Testing

    • Checklist
    • Known Issues
  • Misc

    • Aria Essentials
    • Component Naming Scheme
    • Faq
  • Page Grid Use Guide
  • Skeleton Use Guide
  • Animation Guide

COMPONENTS

  • Accordion
  • Alert Dialog
  • Avatar
  • Badge
  • Breadcrumbs
  • Button
  • Calendar
  • Card
  • Carousel
  • Ccd
  • Chart Legend
  • Checkbox
  • Chip
  • Chips Combobox
  • Combobox
  • Confirm Dialog
  • Date Textbox
  • Details
  • Donut Chart
  • Education Notice
  • Eek
  • Field
  • File Input
  • File Preview Card Group
  • File Preview Card
  • Filter Chip
  • Filter Input
  • Flag
  • Floating Label
  • Global
  • Icon Button
  • Icon
  • Image Placeholder
  • Infotip
  • Inline Notice
  • Item Tile Group
  • Item Tile
  • Layout Grid
  • Lightbox Dialog
  • Link
  • List
  • Listbox Button
  • Listbox
  • Marketsans
  • Menu Button
  • Menu
  • Number Input
  • Page Grid
  • Page Notice
  • Pagination
  • Panel Dialog
  • Phone Input
  • Progress Bar Expressive
  • Progress Bar
  • Progress Spinner
  • Progress Stepper
  • Radio
  • Sass
  • Section Notice
  • Section Title
  • Segmented Buttons
  • Select
  • Selection Chip
  • Signal
  • Skeleton
  • Snackbar Dialog
  • Split Button
  • Star Rating Select
  • Star Rating
  • Switch
  • Table
  • Tabs
  • Textbox
  • Toast Dialog
  • Toggle Button Group
  • Toggle Button
  • Tokens
  • Tooltip
  • Tourtip
  • Typography
  • Utility

You are here

  • Evo Web
  • Components
  • Menu Button
  • Overview
  • Accessibility
  • CSS 2.3
  • Marko Storybook 2.3
  • React Storybook 2.3
  • Design System

Menu Button Component

A button that expands to reveal a menu within a popover.

The menu button pattern is a JavaScript widget. It is a button that expands to reveal a menu in a popover.

A menu is appropriate when requiring a partial page re-render without using a form or full page reload. For example: dynamic filtering and sorting of search results.

A menu is not appropriate for a full page reload. For that, please use links instead (see the fake menu pattern. The distinction between menu items and links is important. A menu item is a command that executes JavaScript, whereas a link is a command that navigates to a url. If your menu must contain a mix of JavaScript behaviour and link behaviour, please use a regular list of buttons and links. Do no mix menu items with links.

TIP: Do not call a menu button a "dropdown"! The term "dropdown" is ambiguous and could be confused with a listbox, combobox select or any other kind of overlay that "drops down". If you must, call it a dropdown menu.

A menu button follows the principal of progressive disclosure , it keeps secondary commands hidden from view until needed.

Terminology

We use the following terminology when discussing this pattern.

  • widget : the pattern as a whole, comprising the parts listed below
  • button : expands or collapses the overlay
  • collapsed/expanded : state of overlay
  • overlay : contains menu
  • menu : a menu that contains commands
  • command : individual menu item, menu item checkbox or menu item radio commands
Marketsans ComponentMenu Component
Evo Web

Building accessible and performant components for the modern, responsive web. Empowering developers to create inclusive user experiences.

© 2025 Evo Web. All rights reserved.

Main

  • Components
  • Accessibility
  • Guides
  • Evo CSS Components
  • Evo Marko Components
  • Evo React Components
  • Sitemap

Web Guides and Best Practices

  • Page Grid Use Guide
  • Animation Guide
  • Skeleton Use Guide