Otwiera się w nowej karcie

Popover API: menu i dymki bez ciężkiego JavaScriptu

2026-10-16

Laptop z abstrakcyjnym interfejsem na biurku projektanta stron

W tym wpisie...

Wszystkie wpisy

W skrócie: Popover API pozwala zrobić menu, dymek z podpowiedzią albo małe okno informacyjne bez budowania całego systemu w JavaScripcie. Przeglądarka sama obsługuje zamykanie kliknięciem poza elementem i klawiszem Escape, a starszym przeglądarkom można dać prosty fallback.

Popover API pozwala zrobić wysuwany dymek, małe menu albo okno z informacją bez biblioteki JS i bez ręcznego pilnowania kliknięcia poza elementem. Wystarczy kilka atrybutów HTML. To jedna z tych funkcji, które wyglądają niepozornie, a po wdrożeniu oszczędzają sporo kodu na stronie firmowej.

Popover API w praktyce: co robi za Ciebie przeglądarka?

Popover API przenosi element do tak zwanej górnej warstwy interfejsu i daje mu natywne zachowanie, którego wcześniej często pilnował JavaScript. Element z atrybutem popover może być otwierany przyciskiem z popovertarget. Przeglądarka obsługuje m.in. zamykanie klawiszem Escape, kliknięcie poza popoverem i poprawne ułożenie nad resztą strony.

To nie jest zamiennik pełnego modala do każdej sytuacji. To raczej lekki mechanizm do krótkich treści: informacji o wycenie, filtrów, menu użytkownika, podpowiedzi przy formularzu albo listy opcji w panelu klienta. Oficjalny opis znajdziesz w dokumentacji MDN: Popover API.

Minimalny przykład bez JavaScriptu

Najmniejszy działający przykład składa się z przycisku i elementu z atrybutem popover. Poniżej jest wersja, którą możesz wkleić nawet do bloku „Własny HTML” w WordPressie.

<button type='button' popovertarget='wycena-popover'>
  Co obejmuje bezpłatna wycena?
</button>

<div id='wycena-popover' popover>
  <h2>Bezpłatna wycena strony</h2>
  <p>Opisz firmę, cel strony i najważniejsze podstrony. Wrócimy z konkretną propozycją.</p>
  <a href='/kontakt/'>Przejdź do formularza kontaktowego</a>
  <button type='button' popovertarget='wycena-popover' popovertargetaction='hide'>
    Zamknij
  </button>
</div>

W tym przykładzie pierwszy przycisk otwiera popover, a przycisk w środku go zamyka. Co ważne, użytkownik nie jest uwięziony w interfejsie. Może kliknąć poza okienkiem albo nacisnąć Escape. Dla małych elementów pomocniczych to duża różnica względem przypadkowo sklejonych skryptów z internetu.

Gdzie użyć tego na stronie firmowej?

Na stronie firmowej popover najlepiej działa tam, gdzie chcesz dopowiedzieć szczegół bez rozbijania rytmu czytania. Przykład: przy cenniku możesz dodać krótkie „Co obejmuje wycena?”, przy formularzu kontaktowym „Jakie informacje przyspieszą odpowiedź?”, a przy usłudze „Co dostarczamy po zakończeniu projektu?”.

W PEWIT lubimy takie rozwiązania, bo są lekkie i pomagają utrzymać porządek w projekcie. Jeśli budujesz stronę dla lokalnej firmy ze Świebodzina, Zielonej Góry czy Gdyni, nie zawsze potrzebujesz ciężkiego panelu z animacjami. Czasem wystarczy dobrze opisany przycisk i małe okno z konkretem. Więcej o prostym, zaufanym układzie strony pisaliśmy w tekście o tym, jak strona firmowa budzi zaufanie.

Popover dobrze wspiera też UX, bo nie odciąga użytkownika na osobną podstronę przy każdej drobnej informacji. Trzeba tylko pilnować, żeby nie chować w nim treści krytycznych: regulaminu, warunków zakupu, jedynego przycisku zamówienia albo ważnych danych kontaktowych. O wpływie takich decyzji na zachowanie użytkownika przeczytasz w naszym wpisie co to jest UX i dlaczego wpływa na sprzedaż.

Wsparcie przeglądarek i bezpieczny fallback

Wsparcie Popover API jest obecnie szerokie w głównych przeglądarkach, ale przy stronach firmowych warto myśleć o starszych wersjach. Aktualny status możesz sprawdzić w zestawieniach Baseline na web.dev. Najprostsza zasada: popover traktuj jako ulepszenie, a nie jedyną drogę do ważnej treści.

Praktyczny fallback jest prosty: wewnątrz popovera dodaj normalny link do pełnej podstrony lub formularza. Jeśli starsza przeglądarka nie obsłuży otwierania, użytkownik nadal ma widoczną alternatywę w treści strony albo obok przycisku. Możesz też dodać krótki CSS, który ukryje nieobsługiwany popover w przeglądarkach rozumiejących zapytanie @supports.

[popover] {
  max-width: min(32rem, calc(100% - 2rem));
  padding: 1rem;
  border: 1px solid #ddd;
  border-radius: .75rem;
  box-shadow: 0 1rem 3rem rgb(0 0 0 / .18);
}

[popover]::backdrop {
  background: rgb(0 0 0 / .25);
}

@supports not selector(:popover-open) {
  [popover] {
    display: none;
  }
}

Jeśli chcesz mieć takie drobne, szybkie i dostępne rozwiązania na swojej stronie, zobacz naszą ofertę tworzenia stron, sklepów i opieki WordPress. Przy małych elementach interfejsu często wygrywa nie efektowność, tylko prostota, przewidywalność i brak zbędnego kodu.

Strony premium: Michał Czajka