Атрибут popover в HTML: Всплывающие Окна без JavaScript (2026)

Долгое время создание всплывающих окон, тултипов и выпадающих меню требовало подключения сторонних библиотек на JavaScript (таких как Popper.js) или написания сложных скриптов для управления состоянием, фокусом (z-index) и закрытием по клику вне элемента. Ситуация полностью изменилась с появлением в стандарте HTML атрибута popover (Popover API).

Что такое атрибут popover?

Атрибут popover — это нативный встроенный механизм браузера, который позволяет любому HTML-элементу отображаться поверх всех остальных слоев страницы (в так называемом «верхнем слое» или Top Layer), автоматически управляя логикой скрытия и показа, без единой строчки JavaScript.

Как использовать Popover API

Создание бейзового всплывающего окна теперь требует всего лишь добавления двух атрибутов к кнопке-триггеру и самому скрытому блоку:

Атрибуты управления

Popover API предлагает декларативный контроль над поведением всплывающих окон через HTML-атрибуты:

  • popover: Может принимать значения auto (закрывается при клике мимо, дефолт) или manual (не закрывается при клике мимо, нужно явно закрывать крестиком).
  • popovertarget="id": Указывает ID поповера, который нужно открыть или переключить (toggle).
  • popovertargetaction: Может быть toggle (дефолт), show или hide. Это позволяет создавать раздельные кнопки для открытия и закрытия.

Стилизация через CSS

Браузер по умолчанию центрирует popover на экране с черной рамкой. Однако вы можете полностью кастомизировать его, включая фон под ним с помощью псевдоэлемента ::backdrop:

Заметка по доступности (A11y): Нативный popover автоматически управляет фокусом клавиатуры и поддерживает нажатие клавиши Escape для закрытия (при режиме auto), что делает интерфейс невероятно доступным из коробки.

Часто задаваемые вопросы (FAQ) о Popover API

В чем разница между popover и тегом <dialog>?

Тег <dialog> предназначен исключительно для модальных окон, прерывающих рабочий процесс пользователя (требующих явного взаимодействия, например, «Сохранить» или «Отмена»). Атрибут popover более универсален: он используется для неблокирующих интерфейсов, таких как выпадающие меню, комбобоксы, подсказки (тултипы) и тосты (уведомления).

Как позиционировать popover относительно кнопки?

На данный момент W3C активно разрабатывает спецификацию CSS Anchor Positioning. В комбинации с Popover API это позволит «якорить» поповер (например, тултип) строго под или над кнопкой, которая его вызвала, используя только CSS-свойства anchor-name и position-anchor.

Что такое Top Layer?

Top Layer (Верхний слой) — это специальный слой рендеринга бразуера, который находится поверх всего остального документа, вне зависимости от значений z-index остальных элементов. Popover элементы рендерятся именно в Top Layer, что гарантирует, что они никогда не будут обрезаны свойством overflow: hidden или перекрыты другими блоками.

Artem Firsov
Оцените автора
Добавить комментарий