Fragmenty, portale i pułapka kolejności DOM
Zachowaj zgodność kolejności renderowania z drzewem dostępności.
Fragmenty, portale i pułapka kolejności DOM to bezpłatna lekcja Web Accessibility Academy na CoddyKit. To lekcja 3 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 Web Accessibility Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Web Accessibility Academy zawiera 4 lekcji w sumie.
Kolejność źródłowa jest kolejnością domyślną
Czytniki ekranu i klawiatura podążają za kolejnością DOM-u, czyli kolejnością, w której elementy występują w dokumencie. CSS może zmieniać rozmieszczenie wizualne, ale nie zmienia kolejności odczytywania.
Fragmenty nie dodają dodatkowego elementu
Reactowy Fragment grupuje elementy potomne bez dodawania opakowującego elementu div. Dzięki temu DOM pozostaje przejrzysty, a listy i tabele nie są zaburzane przez zbędne elementy.
<>
<th>Name</th>
<th>Email</th>
</>Dlaczego opakowujący element div może zaszkodzić
Dodatkowy element div wewnątrz listy lub tabeli może zaburzyć strukturę elementów nadrzędnych i potomnych oczekiwaną przez technologie asystujące. Fragment całkowicie zapobiega takiemu nieprawidłowemu zagnieżdżeniu.
Portale renderują zawartość w innym miejscu
Portal renderuje elementy potomne w innym węźle DOM-u, często bezpośrednio w elemencie body dokumentu. To standardowy sposób umieszczania okien modalnych nad całą pozostałą zawartością.
createPortal(<Modal />, document.body);Portale zachowują kontekst Reacta
Mimo że znaczniki trafiają w inne miejsce, portal pozostaje częścią drzewa komponentów. Stan i kontekst przepływają normalnie, więc logika pozostaje bez zmian.
Pułapka kolejności DOM-u
Portal umieszczony na końcu body może pojawić się za niezwiązanymi z nim treściami. Przechodzenie klawiszem Tab może przenieść fokus w odległe miejsce, dlatego w przypadku portali niezbędne jest zarządzanie fokusem.
Przenieś fokus do portalu
Po otwarciu portalu klawiatura nie podąża za nim automatycznie. Jawnie przenieś fokus do okna modalnego, aby użytkownik znalazł się przy nowej zawartości.
Uwięź i przywróć fokus
Gdy modalny portal jest otwarty, utrzymuj klawisz Tab wewnątrz niego. Po zamknięciu przywróć fokus na elemencie, który go otworzył, ponieważ bliskość w DOM-ie nie zrobi tego za Ciebie.
Kolejność wizualna a kolejność odczytywania
Kolejność flexboxa CSS lub rozmieszczenie elementów w gridzie może zmienić wygląd ekranu. Kolejność przechodzenia klawiszem Tab nadal wynika ze struktury źródłowej, dlatego należy unikać zmieniania kolejności interaktywnych treści za pomocą CSS.
Zachowuj znaczącą kolejność źródłową
Pisz JSX tak, aby kolejność źródłowa odpowiadała logicznemu przebiegowi czytania. Dzięki temu zarówno użytkownicy widzący, jak i korzystający z czytników ekranu napotkają treści w tej samej, sensownej kolejności.
Testuj, przechodząc klawiszem Tab
Przechodź przez aplikację klawiszem Tab i obserwuj, dokąd trafia fokus. Jeśli przeskakuje w nieoczekiwane miejsce, trzeba sprawdzić kolejność DOM-u lub portal.
Szybki test
Montujesz modal za pomocą portalu w document.body. Jaką nową odpowiedzialność to na Ciebie nakłada?
Podsumowanie: kolejność i portale
Używaj Fragmentów, aby unikać nieprawidłowych elementów opakowujących, zachowuj logiczną kolejność źródłową i starannie zarządzaj fokusem za każdym razem, gdy portal renderuje zawartość w innym miejscu. 🧩
Często zadawane pytania
Czy lekcja „Fragmenty, portale i pułapka kolejności DOM” jest bezpłatna?
Tak — pełny tekst „Fragmenty, portale i pułapka kolejności DOM” 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 Web Accessibility Academy, przejdź na CoddyKit PRO. Kurs Web Accessibility Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Fragmenty, portale i pułapka kolejności DOM”?
Zachowaj zgodność kolejności renderowania z drzewem dostępności. Ćwiczysz Web Accessibility 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ąć Web Accessibility Academy?
Nie wymagamy żadnego doświadczenia. Web Accessibility 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 3 z 4.
Ile czasu zajmuje lekcja „Fragmenty, portale i pułapka kolejności DOM”?
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 Web Accessibility Academy?
Tak. Każda lekcja Web Accessibility 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
- Zmiany tras bez ponownego ładowania strony
- Zarządzanie fokusem za pomocą refs i useEffect
- Fragmenty, portale i pułapka kolejności DOM
- jsx-a11y i zabezpieczenia na poziomie komponentów