Kolejność DOM ma znaczenie

Ważność domyślnej kolejności DOM

Dave Gash
Dave Gash
Meggin Kearney
Meggin Kearney

Praca z natywnymi elementami to świetny sposób na poznanie zachowania fokusa, ponieważ są one automatycznie wstawiane do kolejności kart na podstawie ich pozycji w DOM.

Możesz na przykład mieć 3 elementy przycisku, jeden po drugim w DOM. Naciśnięcie Tab spowoduje kolejno skupienie na każdym przycisku. Kliknij blok kodu poniżej, aby zmienić punkt początkowy nawigacji z użyciem fokusa, a następnie naciśnij Tab, aby przesuwać fokus między przyciskami.

<button>I Should</button>
<button>Be Focused</button>
<button>Last!</button>

Należy jednak pamiętać, że za pomocą CSS można umieścić elementy w pewnej kolejności w DOM, ale wyświetlić je w innej kolejności na ekranie. Jeśli na przykład użyjesz właściwości CSS, takiej jak float, aby przesunąć jeden przycisk w prawo, przyciski będą się wyświetlać w innej kolejności na ekranie. Jednak ponieważ ich kolejność w DOM pozostaje taka sama, nie zmienia się też kolejność kart. Gdy użytkownik przewija stronę za pomocą klawiszy strzałek, przyciski są zaznaczane w nieintuicyjnym porządku. Kliknij blok kodu poniżej, aby zmienić punkt początkowy nawigacji za pomocą fokusa, a następnie naciśnij Tab, aby przesuwać fokus między przyciskami.

<button style="float: right">I Should</button>
<button>Be Focused</button>
<button>Last!</button>

Zachowaj ostrożność podczas zmiany wizualnej pozycji elementów na ekranie za pomocą arkuszy CSS. Może to powodować, że kolejność kart zmienia się pozornie losowo, co może dezorientować użytkowników, którzy korzystają z klawiatury. Z tego powodu w kontrolnej liście AIM dla witryn internetowych w sekcji 1.3.2 podano, że kolejność czytania i nawigacji określona przez kolejność kodu powinna być logiczna i intuicyjna.

Zwykle warto co jakiś czas przełączać się między kartami, aby sprawdzić, czy nie nastąpiło przypadkowe pomieszanie ich kolejności. Warto wyrobić sobie ten nawyk, ponieważ nie wymaga on wiele wysiłku.

Treści poza ekranem

Co zrobić, jeśli masz treści, które nie są obecnie wyświetlane, ale nadal muszą znajdować się w DOM, np. elastyczne menu boczne? Gdy takie elementy otrzymują fokus, gdy są poza ekranem, może się wydawać, że ten fokus znika i pojawia się ponownie, gdy użytkownik przewija stronę. Jest to oczywiście niepożądany efekt. W idealnej sytuacji panel nie powinien być aktywny, gdy jest poza ekranem, a użytkownik powinien mieć możliwość korzystania z niego tylko wtedy, gdy może z nim wchodzić w interakcję.

Wysuwany panel poza ekranem może odwracać uwagę.

Czasami trzeba trochę podziałać jak detektyw, aby dowiedzieć się, gdzie się znajduje punkt skupienia. Aby sprawdzić, który element jest obecnie zaznaczony, możesz użyć w konsoli elementu document.activeElement.

Gdy już wiesz, który element ekranu jest aktywny, możesz ustawić dla niego wartość display: none lub visibility: hidden, a potem przywrócić wartość display: block lub visibility: visible, zanim wyświetlisz go użytkownikowi.

Panel wsuwany ustawiony tak, aby nie wyświetlać żadnych treści.
Wysuwany panel ustawiony na wyświetlanie bloku.

Ogólnie zachęcamy deweloperów, aby przed każdą publikacją przeglądali swoje witryny, aby sprawdzić, czy kolejność kart się nie zmienia ani nie wychodzi poza logiczną sekwencję. Jeśli tak, upewnij się, że odpowiednio ukrywasz treści poza ekranem za pomocą atrybutów display: none lub visibility: hidden albo że zmieniasz fizyczne pozycje elementów w DOM, aby były uporządkowane w logiczny sposób.