UI primitives

Popover

Newly availablesince Jan 2025

Replaces: A hand-rolled dropdown with focus handling, an escape-key listener and a z-index fight. The top layer, light dismiss and keyboard behaviour come with the attribute.

See it working

No JavaScript

Click outside or press Escape. The top layer, the dismissal and the focus handling came with the attribute.

The syntax

<button popovertarget="menu">Options</button>
<div id="menu" popover>…</div>
Edit the demo’s CSS

This is the stylesheet running the demo above. Change a value and watch it. Break it on purpose: delete the modern line and you are looking at the fallback.

For browsers without it

A browser without it shows the popover element inline as ordinary content, so hide it with [popover]:not(:popover-open) only inside a support check, or the menu becomes unreachable instead of merely always visible.