Przejdź do treści

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.

Różnice między oknem dialogowym a popoverem
Cecha<dialog><... popover>
SemantycznośćTak (wymaganie od użytkownika podjęcia akcji)Nie (menu kontekstowe, wyskakujące podpowiedzi)
Domyślnie otwarteTak (jeden z dostępnych trybów)Nie (potrzebny przycisk otwierania)
Okno modalneTak (jeden z dostępnych trybów)Nie
Wymuszenie jednego oknaTak (tryb modalny blokuje otwieranie innych okien)Tak (tryb automatyczny zamyka inne okna)
Zamykanie kliknięciem poza oknem lub klawiszem EscTak (obie opcje jednocześnie lub tylko Esc)Tak (obie opcje jednocześnie)
Okno dialogowe domyślnie nie ma przypisanego żadnego bardziej skomplikowanego wyglądu poza czarną ramką i niewielkim marginesem wewnątrz. Aby to zmienić, użyj stylów CSS. Możesz również skorzystać ze specjalnego generatora zamieszczonego tutaj.

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>.

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

❌ Nie działa

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

Komentarze

Zobacz więcej komentarzy

Facebook