<menu>: The Menu element
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The<menu>
HTML element is described in the HTML specification as a semantic alternative to<ul>
, but treated by browsers (and exposed through the accessibility tree) as no different than<ul>
. It represents an unordered list of items (which are represented by<li>
elements).
Try it
<div> <a href="#">NASA’s Webb Delivers Deepest Infrared Image of Universe Yet</a> <menu> <li><button>Save for later</button></li> <li><button>Share this news</button></li> </menu></div>
.news { background-color: bisque; padding: 1em; border: solid thin black;}menu { list-style-type: none; display: flex; padding: 0; margin-bottom: 0; gap: 1em;}
Attributes
This element also accepts theglobal attributes.
compact
DeprecatedThis Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute is browser-specific. UseCSS instead: to give a similar effect as the
compact
attribute, the CSS propertyline-height
can be used with a value of80%
.
Usage notes
The<menu>
and<ul>
elements both represent an unordered list of items. The key difference is that<ul>
primarily contains items for display, while<menu>
represents a toolbar containing commands that the user can perform or activate.
Note:In early versions of the HTML specification, the<menu>
element had an additional use case as a context menu. This functionality is considered obsolete and is not in the specification.
Examples
Toolbar
In this example, a<menu>
is used to create a toolbar for an editing application.
HTML
<menu> <li><button>Copy</button></li> <li><button>Cut</button></li> <li><button>Paste</button></li></menu>
Note that this is functionally no different from:
<ul> <li><button>Copy</button></li> <li><button>Cut</button></li> <li><button>Paste</button></li></ul>
CSS
menu,ul { display: flex; list-style: none; padding: 0; width: 400px;}li { flex-grow: 1;}button { width: 100%;}
Result
Technical summary
Content categories | Flow content. If the element's children include at least one |
---|---|
Permitted content | Zero or more occurrences of |
Tag omission | None, both the starting and ending tag are mandatory. |
Permitted parents | Any element that acceptsflow content. |
Implicit ARIA role | list |
Permitted ARIA roles | directory ,group ,listbox ,menu ,menubar ,none ,presentation ,radiogroup ,tablist ,toolbar ortree |
DOM interface | HTMLMenuElement |
Specifications
Specification |
---|
HTML # the-menu-element |