Jak działa i skąd się wziął internet
Niekiedy można mieć wrażenie, że internet jest z nami od zawsze. Czy wiemy jednak jak i kiedy powstał? Jakie są podstawy jego działania?
Pięć prostych zasad ARIA, czyli Accessible Rich Internet Applications. To w wolnym tłumaczeniu znaczy - aplikacji internetowych, które są dostępne dla prawie każdego. Mowa tutaj o osobach z niepełnosprawnościami typu:
Kiedy musisz zadbać o ich spełnienie? Na przykład kiedy planujesz tworzyć aplikację dla organizacji rządowych. Muszą one wpisywać się w wytyczne WCAG, które wykorzystują zasady ARIA. Warto też o nie zadbać we większości aplikacji, które są dostępne publicznie, dla szerokiego grona odbiorców.
Czasem nie będzie zbytniego sensu poświęcać czasu na stosowanie atrybutów ARIA. Kiedy? Na przykład kiedy robić PoC i liczy się czas. Albo kiedy liczba odbiorców aplikacji jest bardzo ograniczona i specyfika ich pracy wyklucza możliwość zatrudniania osób o określonych niepełnosprawnościach.
Zmierzam do tego, że moim zdaniem zawsze trzeba i warto zadać sobie pytanie czy warto. Jednak obserwowałem czasem sytuacje kiedy programiści spędzali godziny na analizowaniu kilku tagów w komponencie. W aplikacji, którą używają 3 osoby, które muszą mieć sprawny wzrok bo ich głównym zadaniem jest cenzurowanie treści graficznych i szybkie tworzenie kampanii reklamowych.
Dostępne aplikacje przychodzą z bonusem - lepiej się pozycjonują i mogą zdobywać dzięki temu większy ruch oraz zyski.
Sama nazwa ARIA brzmi dość ogólnie, nie? Mówiąc o ARIA w kontekście programowania, mówimy przede wszystkim o atrybutach HTML, które pozwalają nam lepiej opisać dane elementy. Często kontekst nadawany jest poprzez stylowanie, układ elementów, kolory.
Jeżeli ktoś tego nie widzi, bo używa czytnika ekranowego (takie narzędzie, które dosłownie czyta całą zawartość strony internetowej), to bardzo dużo traci. Szczerze mówiąc, jak kiedyś odpaliłem takie narzędzie, to doświadczenie było po prostu koszmarne.
Dlatego więc to tak ważne abyśmy dołożyli starań by te narzędzia mogły sprawnie interpretować to co dzieje się w aplikacji i mogło w jasny sposób wyjaśnić to odbiorcy z niepełnosprawnością.
Wspomniane atrybuty mają być wsparciem przede wszystkim w sytuacjach, które są raczej mało standardowe. Jeżeli jednak istnieje tag, który już domyślnie ma jakąś rolę, to po prostu go użyj. Na przykład do niedawna zalecało się przypisanie roli dialog
do divów, które są modalami, pop-upami. Od jakiegoś czasu dostępny jest dedykowany tag o takiej samej nazwie więc korzystaj z niego.
Poniżej przykłady złych praktyk:
1// Źle
2<div role="dialog">...</div>
3// Dobrze
4<dialog>...</dialog>
5
6// Źle
7<div role="contentinfo">...</div>
8<footer>...</footer>
9
Pssst! Nie za bardzo kojarzysz jakie tagi są dostępne albo nie jesteś pewien jak ich używać? Zerknij do mojego artykułu, który jest słownikiem najważniejszych, najczęściej używanych tagów semantycznych. Pojawi się już jutro!
Trochę w drugą stronę. Wcześniej mówiliśmy o tym żeby nie używać div
kiedy możesz użyć na przykład nav
. Tym razem autorzy dokumentacji zwracają uwagę na to by nie zmieniać istniejących już, domyślnych ról. Poniżej przykłady złej praktyki:
1// Źle!
2<main role="dialog"></main>
3// Dobrze :)
4<main>
5 <dialog>...</dialog>
6</main>
7
8// Źle
9<h2 role=tab>heading tab</h2>
10// Dobrze
11<div role=tab><h2>heading tab</h2></div>
Jak widzisz, dokumentacja sugeruje opakowanie nagłówka dodatkowym tagiem. To może wydawać się sprzeczne z logiką - dodajemy element, który tylko “zaśmieca” DOM. Mimo wszystko, mogą być sytuacje kiedy tego nie unikniemy.
Jeżeli tworzysz jakieś modale, nietypowe przyciski i wykorzystujesz przy tym atrybuty roli (np. role="button"
) to musisz zadbać o to by dało się obsługiwać je klawiaturą.
Tutaj aż prosi się wrócić do pierwszej zasady. Gdy użyjesz natywnych tagów do tego przeznaczonych (np. <button>
lub <a>
), takie interakcje będą działać automatycznie.
Ważne! Dokumentacja podkreśla, że interakcja za pomocą klawiatury musi odbywać się zarówno przy użyciu klawisza enter (return w komputerach Mac) jak i spacji.
Jeżeli masz na stronie jakieś elementy, na które da się najechać myszą i zobaczyć dodatkową treść, które da się kliknąć i ogólnie wejść w jakąś interakcję - nie ukrywaj ich. A konkretniej, nie używaj na nich atrybutów role="presentation
oraz aria-hidden="true"
.
Oba mają jedno, główne zadanie - oznaczyć element jako nieistotny dla czytników ekranowych. Na przykład jakąś grafikę, która po prostu uatrakcyjnia wygląd strony.
Oczywiście wyjątkiem jest sytuacja kiedy element ukrywasz też wizualnie. Jeżeli ukrywamy coś przed użytkownikiem widzącym, jak najbardziej można użyć wtedy tych atrybutów. Chodzi po prostu o to by wszystkie grupy odbiorców miały zapewnione te same doświadczenie.
Ten punkt ponownie wymaga powrotu do pierwszego. Dlatego, że używając natywnych, dedykowanych pewnym zadaniom tagów - to się dzieje automatycznie. Na przykład, każdy input powinien mieć <label>
.
Wtedy te pole tekstowe automatycznie zyskuje widoczną nazwę czyli wizualne wyjaśnienie czemu ma służyć oraz dostępną nazwę, która będzie odczytana przez narzędzia wspierające. Gdybyśmy zamiast <label>
użyli <span>
do opisania tagu <input>
to ten efekt by nie miał miejsca. Mielibyśmy tylko “nazwę widoczną”.
Trochę bardziej tricky jest przypadek z przyciskiem! Nie będzie problemu jeżeli zrobimy coś takiego:
<button type="button">Dodaj do koszyka</button>
Ale bardzo częstym błędem jest używanie samych grafik lub ikon w przyciskach. Nie zrozum mnie źle - to nie jest złe samo w sobie. Ma to sens kiedy chcemy zaoszczędzić miejsce na stronie. Po prostu trzeba wtedy dodać nazwę dostępną. Można to zrobić za pomocą atrybutu aria-label="Dodaj do koszyka"
.
Jest kilka różnych miejsc, które wskazują nam jak tworzyć dostępne aplikacje. Jest ta lista, nazwana zasadami ARIA. Są też wytyczne WAI - Web Accessibility Initiative, o których pisałem w innym artykule. Na samym końcu mamy wytyczne WCAG.
Jak do tego podejść i nie zgłupieć?
Niekiedy można mieć wrażenie, że internet jest z nami od zawsze. Czy wiemy jednak jak i kiedy powstał? Jakie są podstawy jego działania?
Jak sprawdzić czy ktoś nie naciąga nas na kasę, oddając niskiej jakości, niedokończoną stronę? Na co zwrócić uwagę podczas zamawiania i odbioru strony?
Dziwnych zachowań formularzy jest wiele i potrafią one zupełnie zniszczyć odbiór aplikacji przez klientów. Dzisiaj omówimy temat tak żeby ten problem nie dotyka...
Dużo ludzi mówi, że HTML jest prosty. Jednak jakimś cudem prawie nikt nie potrafi go poprawnie używać. Jeżeli uważasz, że Ty potrafisz, to zapraszam do sprawdze...