0Pricing
CSS Academy · Lekcja

Stylowanie modali i okien dialogowych

Styluj natywne elementy HTML dialog oraz niestandardowe modale, używając tła, pozycjonowania i animacji.

Stylowanie modali i okien dialogowych to bezpłatna lekcja CSS Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CSS Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CSS Academy zawiera 4 lekcji w sumie.

Natywny element dialog

Element HTML <dialog> zapewnia wbudowane zachowanie modalu: uwięzienie fokusu, zamykanie klawiszem Escape oraz API showModal() / close(). Zamiast tworzyć od podstaw własny szkielet modalu, ostyluj go za pomocą CSS.

Stylizowanie tła modalu

Pseudoelement ::backdrop służy do stylizowania nakładki za otwartym elementem <dialog>. Zastosuj półprzezroczyste tło: dialog::backdrop { background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); }. Nie jest potrzebny żaden element div pełniący funkcję opakowania.

Układ dialogu

Wyśrodkuj dialog za pomocą CSS: dialog { margin: auto; max-width: min(90vw, 640px); max-height: 90vh; overflow-y: auto; }. Użycie margin: auto na dialogu umieszcza go na środku obszaru widoku bez pozycjonowania za pomocą JS.

Przewijanie i przepełnienie

Ustaw overflow-y: auto na samym dialogu, aby obsłużyć długą zawartość. Gdy modal się otwiera, ustaw overflow: hidden na body, aby uniemożliwić przewijanie tła — dodawaj i usuwaj klasę za pomocą JavaScriptu, aby przełączać ten stan.

Animacja za pomocą CSS

Animuj pojawianie się dialogu za pomocą @starting-style (Chrome 117+), aby tworzyć animacje wejścia wyłącznie w CSS, bez JavaScriptu. Aby zapewnić szerszą obsługę, dodaj za pomocą JavaScriptu klasę open i użyj transition dla transform oraz opacity: slide-up od translateY(20px) do translateY(0).

Wyzwanie: animacja zamykania

Animowanie zamykania dialogu jest trudne — dialog natychmiast się ukrywa po wywołaniu close(). Możliwe rozwiązania to użycie popover API, które natywnie obsługuje animacje zamykania, albo przechwycenie zamknięcia za pomocą JavaScriptu, odtworzenie klasy animacji wyjścia, a następnie wywołanie close() po zakończeniu animacji.

Zarządzanie z-index

Dialogi otwierają się nad całą pozostałą zawartością strony. Unikaj wojen z z-index, korzystając z natywnego kontekstu stosu elementu dialog — jest on renderowany w top layer, nad wszystkimi wartościami CSS z-index, bez konieczności ustawiania z-index na samym dialogu.

Responsywny dialog

Na urządzeniach mobilnych wysuwaj dialogi od dołu jako arkusz: dialog { margin: auto auto 0; width: 100%; border-radius: 16px 16px 0 0; max-height: 90vh; }. Na komputerach wyśrodkuj je jako tradycyjny modal, korzystając ze wzorca margin: auto.

Zarządzanie fokusem

Natywny element dialog automatycznie przenosi fokus na pierwszy element, który może go przyjąć, po otwarciu. Zadbaj o logiczną kolejność przechodzenia klawiszem Tab wewnątrz dialogu. Dodaj przycisk zamykania, który po zamknięciu dialogu przywraca fokus elementowi wyzwalającemu, zapewniając prawidłową nawigację za pomocą klawiatury.

Atrybuty dostępności

Dodaj aria-labelledby wskazujący tytuł dialogu oraz aria-describedby wskazujący jego opis. Rola dialogu jest niejawna dla elementu <dialog>. Czytniki ekranu ogłoszą te etykiety, gdy fokus znajdzie się w dialogu.

Wzorzec dialogu potwierdzenia

Dialogi potwierdzenia powinny zawierać: jasny tytuł w formie pytania, krótki opis skutków, przycisk destrukcyjnej akcji (czerwony, wyrównany do prawej) oraz przycisk anulowania (wyrównany do lewej lub drugorzędny). Użyj autofocus na przycisku anulowania, aby bezpieczny wybór był domyślną akcją wykonywaną z klawiatury.

Sprawdzenie wiedzy

Jaka jest zaleta użycia natywnego elementu <dialog> zamiast niestandardowego modalu opartego na elemencie div?

Podsumowanie

Natywny element dialog wraz z ::backdrop, centrowaniem za pomocą margin: auto, kontrolą overflow, animacjami wejścia w CSS i zarządzaniem fokusem zapewnia w pełni dostępny, sterowany CSS-em wzorzec modalu. Responsywne układy arkusza na urządzeniach mobilnych oraz prawidłowe atrybuty ARIA dopełniają gotowy do użycia produkcyjnie komponent dialogu.

Często zadawane pytania

Czy lekcja „Stylowanie modali i okien dialogowych” jest bezpłatna?

Tak — pełny tekst „Stylowanie modali i okien dialogowych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CSS Academy, przejdź na CoddyKit PRO. Kurs CSS Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Stylowanie modali i okien dialogowych”?

Styluj natywne elementy HTML dialog oraz niestandardowe modale, używając tła, pozycjonowania i animacji. Ćwiczysz CSS Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CSS Academy?

Nie wymagamy żadnego doświadczenia. CSS Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Stylowanie modali i okien dialogowych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CSS Academy?

Tak. Każda lekcja CSS Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Komponent karty z niestandardowymi właściwościami CSS
  2. Stylowanie modali i okien dialogowych
  3. Wzorce menu rozwijanych i popoverów
  4. Komponent kart z użyciem :checked a JavaScript
← Powrót do CSS Academy