The HTML popover Attribute — Complete Deep Dive
Source: Dev.to
The popover attribute is a modern, built‑in way to create lightweight overlays such as:
- dropdowns
- menus
- tooltips
- context panels
- mini dialogs
It is native HTML, meaning:
- no JavaScript library required
- no ARIA hacks required
- no portal logic
- no complex focus management (mostly handled for you)
It was added as part of the Open UI / HTML Living Standard and is now supported in modern Chromium, Safari, and Firefox versions.
Basic Concept
A popover is a hidden element that can be shown/hidden declaratively via attributes. You declare:
<div popover>
Hello Popover
</div>
That element is hidden by default. To show it, connect it to a button:
<button popovertarget="myPopover">Open</button>
That’s it—no JavaScript required.
How It Works Internally
When a popover is opened, it is removed from display: none, enters the top layer (like a portal), renders above all stacking contexts, behaves independently of z-index, and is not clipped by overflow: hidden.
popover Attribute Values
popover="auto" (or just popover – default)
Behavior
- Clicking outside closes it
- Pressing Esc closes it
- Only one auto popover can be open at a time
Ideal for menus, dropdowns, tooltips, and context panels.
popover="manual"
Behavior
- Does not close automatically
- Must be closed manually via JavaScript
- Multiple popovers can be open simultaneously
Use this when you need custom open/close logic or are building a complex UI.
How to Trigger a Popover
Declarative Trigger
<div popover id="myPopover">
<button popovertarget="myPopover">Open</button>
<div>Content</div>
</div>
Controlling Toggle Behavior
The popovertargetaction attribute lets you specify the action (toggle is the default, show, or hide):
<button popovertarget="myPopover" popovertargetaction="show">Open</button>