Okno dialogowe <dialog closedby open, button "button" command commandfor, form "dialog", button "dialog">
Jak w języku HTML stworzyć okno dialogowe bez użycia JavaScript? Co to jest okno modalne? Jak zrobić formularz dialogowy?
Okno dialogowe
Okno dialogowe to element znany z różnego typu aplikacji komputerowych w postaci zwykle niewielkiego okienka, wymagającego od użytkownika podjęcia akcji w postaci wykonania jakiegoś zadania albo podania jakichś informacji. Kiedy użytkownik zakończy, okno dialogowe zostaje zamknięte.
W rzeczywistości okno dialogowe jest integralnym elementem strony, a nie osobnym elementem interfejsu przeglądarki. W związku z tym nie wyskakuje ono poza obręb karty przeglądarki, jak to ma miejsce w przypadku okien pop-up i pop-under.
Sposób działania okna dialogowego jest bardzo podobny do okienka popover. Istnieją jednak ważne różnice.
| Cecha | <dialog> | <... popover> |
|---|---|---|
| Semantyczność | ✔ Tak (wymaganie od użytkownika podjęcia akcji) | ❌ Nie (menu kontekstowe, wyskakujące podpowiedzi) |
| Domyślnie otwarte | ✔ Tak (jeden z dostępnych trybów) | ❌ Nie (potrzebny przycisk otwierania) |
| Okno modalne | ✔ Tak (jeden z dostępnych trybów) | ❌ Nie |
| Wymuszenie jednego okna | ✔ Tak (tryb modalny blokuje otwieranie innych okien) | ✔ Tak (tryb automatyczny zamyka inne okna) |
| Zamykanie kliknięciem poza oknem lub klawiszem Esc | ✔ Tak (obie opcje jednocześnie lub tylko Esc) | ✔ Tak (obie opcje jednocześnie) |
Domyślnie otwarte okno dialogowe <dialog open closedby, button "button" command commandfor>
- Wariant podstawowy:
<dialog open closedby="zamykanie">...</dialog>
- Wariant z oddzielnym przyciskiem zamykania:
<dialog open id="identyfikator"> ... <button type="button" commandfor="identyfikator" command="close">Zamknij</buttton> </dialog>
- Wariant z oddzielnym przyciskiem i innymi metodami zamykania:
<dialog open closedby="zamykanie" id="identyfikator"> ... <button type="button" commandfor="identyfikator" command="close">Zamknij</buttton> </dialog>
- zamykanie
- Może przyjąć postać:
- any - zamykanie kliknięciem poza oknem dialogowym lub klawiszem Esc
- closerequest - zamykanie klawiszem Esc
- identyfikator
- Dowolny unikalny tekst - tzn. taki, który nie może się powtórzyć w tym samym dokumencie w postaci drugiego atrybutu
id="..." - Zamknij
- Można wstawić własny napis, który zostanie wyświetlony na przycisku zamykającym okno dialogowe
Okno dialogowe może zostać otwarte od razu po wejściu na stronę, bez potrzeby wykonywania żadnej dodatkowej akcji przez użytkownika. Może to być przydatne w sytuacji, kiedy wymagane jest podjęcie ważnej akcji, zanim w ogóle będzie można przejść do właściwej treści strony. Może to być np. akceptacja regulaminu, potwierdzenie pełnoletności albo wyrażenie zgody na przetwarzanie danych osobowych.
Zaleca się wstawienie w oknie dialogowym oddzielnego przycisku zamykania. Nie dla wszystkich użytkowników może być oczywiste użycie w tym celu klawisza Esc czy nawet kliknięcie poza obszarem okna.
Przykład <dialog open, button "button" commandfor command>
<dialog open id="dialog1"> <p>Długi tekst, którego i tak nikt nie czyta 😉</p> <button type="button" commandfor="dialog1" command="close">Akceptuję regulamin</button> </dialog>
Modalne okno dialogowe <dialog closedby, button "button" command commandfor>
- Wariant podstawowy:
<dialog id="identyfikator">...</dialog> <button type="button" commandfor="identyfikator" command="show-modal">Otwórz</button>
- Wariant podstawowy z innymi metodami zamykania:
<dialog closedby="zamykanie" id="identyfikator">...</dialog> <button type="button" commandfor="identyfikator" command="show-modal">Otwórz</button>
- Wariant z oddzielnym przyciskiem zamykania:
<dialog id="identyfikator"> ... <button type="button" commandfor="identyfikator" command="close">Zamknij</buttton> </dialog> <button type="button" commandfor="identyfikator" command="show-modal">Otwórz</button>
- Wariant z oddzielnym przyciskiem i innymi metodami zamykania:
<dialog closedby="zamykanie" id="identyfikator"> ... <button type="button" commandfor="identyfikator" command="close">Zamknij</buttton> </dialog> <button type="button" commandfor="identyfikator" command="show-modal">Otwórz</button>
- zamykanie
- Może przyjąć postać:
- any - zamykanie kliknięciem poza oknem dialogowym lub klawiszem Esc
- closerequest - zamykanie klawiszem Esc (domyślnie dla okien modalnych)
- none - zamykanie wyłącznie oddzielnym przyciskiem
- identyfikator
- Dowolny unikalny tekst - tzn. taki, który nie może się powtórzyć w tym samym dokumencie w postaci drugiego atrybutu
id="..." - Otwórz
- Zamknij
- Można wstawić własne napisy, które zostaną wyświetlone na przyciskach otwierających lub/i zamykających okienko popover
Okno modalne blokuje treść strony znajdującą się pod nim, dopóki nie zostanie zamknięte. Nie da się np. zaznaczyć tekstu ani kliknąć w żaden element na stronie pod spodem. Stosujemy go, aby wymusić na użytkowniku podjęcie decyzji lub zwrócić jego uwagę, zanim będzie mógł kontynuować korzystanie ze strony:
- Akcje wymagające potwierdzenia - gdy operacja jest istotna lub nieodwracalna (np. usunięcie danych)
- Zbieranie kluczowych danych - np. logowanie, płatność, uzupełnienie wymaganych informacji
- Komunikaty krytyczne - błędy, ostrzeżenia lub informacje, których nie można zignorować
- Skupienie uwagi na jednym zadaniu - aby nie rozpraszać użytkownika pozostałą zawartością strony (np. kreator krok po kroku)
Przykład <dialog, button "button" commandfor command>
<dialog id="dialog2"> <p>Zwróć uwagę, że cała strona pod spodem jest zablokowana.</p> <p>Aby to sprawdzić, spróbuj bez zamykania okna zaznaczyć tekst: "Właściwa treść strony...".</p> <button type="button" commandfor="dialog2" command="close">Zamknij</button> </dialog> <button type="button" commandfor="dialog2" command="show-modal">Otwórz okno modalne</button> <p>Właściwa treść strony...</p>
Formularz dialogowy <form "dialog", button "dialog">
- Wariant podstawowy:
<dialog> <form method="dialog">...</form> <dialog>
- Nadpisanie metody formularza:
<dialog> <form> ... <button formmethod="dialog">...</button> </form> <dialog>
Formularz dialogowy jest rodzajem okna dialogowego, które zawiera pola do wypełniania przez użytkownika. Przydaje się do zbierania kluczowych danych (np. logowanie, płatność, uzupełnienie wymaganych informacji) albo przy tworzeniu kreatorów krok po kroku.
Można go stworzyć zarówno jako domyślnie otwarte albo modalne okno dialogowe. Robi się to poprzez umieszczenie wewnątrz elementu <dialog>...</dialog> znacznika formularza, ale z przypisanym atrybutem method="dialog". Możliwe jest również użycie atrybutu formmethod="dialog" na przycisku wysyłającym formularz. Wysłanie formularza dialogowego automatycznie zamyka okno dialogowe, ale nie ładuje nowej strony ani nie wysyła samoczynnie żadnych danych na serwer czy też za pośrednictwem poczty e-mail.
Przykład <dialog open, form "dialog">
<dialog open> <form method="dialog"> <p>Długi tekst, którego i tak nikt nie czyta 😉</p> <button type="submit">Zgadzam się</button> <button formmethod="get" formaction="https://www.google.pl/" formtarget="_top">Wychodzę ze strony</button> </form> </dialog>
Pytania i odpowiedzi <dialog open, button command commandfor>
Czym jest dialog w HTML?
Dialog w HTML to element <dialog> służący do tworzenia okien dialogowych, które mogą być otwierane i zamykane np. przez command="show-modal". Na przykład: <dialog id="dlg">Treść</dialog> <button commandfor="dlg" command="show-modal">Otwórz</button>.
Jaka jest różnica między trybem dialogowym a trybem Showmodal?
Tryb dialogowy <dialog open> wyświetla okno bez blokowania reszty strony, natomiast command="show-modal" otwiera dialog modalny, który blokuje interakcję z tłem i wymusza fokus na dialogu.
Czy modalny to to samo co dialogowy?
Nie, modalny oznacza sposób działania (blokowanie interakcji z tłem), a dialogowy to ogólne pojęcie odnoszące się do okna dialogowego, które może być zarówno modalne, jak i niemodalne.
Przeglądarki
![]() Chrome | ![]() Firefox | ![]() Edge | ![]() Opera | ![]() Safari | |
|---|---|---|---|---|---|
<dialog> | 37 2014-08-26 | 98 2022-03-08 | 79 2020-01-15 | 24 2014-09-02 | 15.4 2022-03-14 |
<dialog closedby> | 134 2025-03-04 | 141 2025-07-22 | 134 2025-03-06 | 119 2025-05-13 | ❌ |
<dialog open> | 37 2014-08-26 | 98 2022-03-08 | 79 2020-01-15 | 24 2014-09-02 | 15.4 2022-03-14 |
<button command> | 135 2025-04-01 | 144 2025-10-14 | 135 2025-04-04 | 120 2025-07-02 | 26.2 2025-12-12 |
<button commandfor> | 135 2025-04-01 | 144 2025-10-14 | 135 2025-04-04 | 120 2025-07-02 | 26.2 2025-12-12 |







