Dostępność stron WWW
3 godz. 32 min · HTML i CSS · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerHTML został wynaleziony już w 1989 roku i jest on podstawą tworzenia stron internetowych do dziś. W ciągu ponad 30 lat społeczność programistów tworzących strony internetowe odkrywała coraz to nowe problemy w tworzeniu treści pod unikalne medium jakim jest internet. Jednak na przełomie dekad społeczność zdaje się zapominać o pierwotnych założeniach sieci - treści dostępnych dla każdego. W czasach gdy nowe JavaScriptowe frameworki stawiają... developer experience ponad user experience, paradoksalnie - jest coraz mniej stron internetowych, które są szybkie oraz dostępne dla szerokiej grupy odbiorców.
Dostępność w tym kontekście to tworzenie rozwiązań, z których korzystać może każdy - niezależnie od tego czy zapomniał słuchawek, niedowidzi, zepsuła mu się myszka czy mówi w innym języku. To także troska o użytkownika bez względu na jego potencjalne ograniczenia. Przekłada się to bezpośrednio na ilość osób, które mogą skorzystać z Twojej strony WWW. To właśnie przedstawimy Ci w tym kursie - poznasz techniki tworzenia stron internetowych, które z założenia dbają o użytkownika i pozostawiają kontrolę w jego rękach. Dowiesz się też jaki ma to wpływ dla biznesu czy Ciebie - jako użytkownika sieci.
Troska o użytkownika to dobry User Experience - co z kolei tworzy przywiązanie do produktu. Ale mniej oczywistymi aspektami dostępności jest wpływ na pozycjonowanie stron internetowych. Poprzez korzystanie z semantycznych znaczników i jawne wyrażanie treści poprzez markup możemy - jako przyjemny efekt uboczny - wpłynąć na silniki wyszukiwarek internetowych, by pojawiać się w wynikach wyżej niż dotychczas.
Niestety, łatwo jest tworzyć strony niedostępne - głównie ze względu na niewiedzę. W kursie zrozumiesz najczęściej popełniane błędy dostępności, przez które Twoje treści mogą nie docierać do Twoich potencjalnych użytkowników, oraz dowiesz się jak tworzyć te same rozwiązania w sposób dostępny.
Jesteś znudzony tym, co oferuje Front-End? Każdy framework brzmi jak koło wynajdywane na nowo? Wątek dostępności to zupełnie nowy poziom postrzegania produktu i pracy na rzecz użytkownika. Ilość potencjalnych przypadków do rozwiązania, jeśli chodzi o formę konsumpcji treści przez użytkownika, jest ogromna - możesz ponownie rozpalić swoje zainteresowanie web developmentem!
Aby móc efektywnie skorzystać z tego kursu, potrzebujesz podstawowej wiedzy na temat HTML i CSS. Przyda się również znajomość języka angielskiego, ale nie jest to obowiązkowe, pojedyncze zwroty są tłumaczone na bieżąco.
Cześć w tej lekcji opowiem o kolejności tabulacji
coś co już poruszyliśmy przy omawianiu narzędzia accessibility insights for web
dla chromea generalnie idea jest taka że każdy element
interaktywny typu link button element formularza powinien
podążać z naturalnym flow dla danego języka czyli jeżeli jesteśmy
w krajach zachodnich no to jest to od lewej do prawej z góry do dołu no
i jeżeli jesteśmy w jakimś kraju na przykład arabskim czy chińskim no to oczywiście ten
ta kolejność jest inna i ona powinna zgadzać się z direction danego
języka natomiast jest kilka sytuacji kiedy ten tab order jest zakłócony między
innymi jest to niestandardowe pozycjonowanie na przykład absolutne bądź za pomocą
flexa jeżeli zrobimy tutaj taką sytuację że zrobimy na body flex
direction ponieważ body jest spozycjonowanie na flexie to możecie zobaczyć sobie tutaj
w tym base flex-direction na column-reverse
no to oczywiście cały ten
podgląd się nam odwrócili i będzie renderowany w odwrotnej kolejności natomiast jak
będzie wyglądał markup no jeśli będziemy tabować się po kolei no to faktycznie
lecimy od samego dołu dlaczego no przede wszystkim dlatego
że tabulacja jest zgodna z tym jak elementy są w kodzie
źródłowym umiejscowione nie tak jak są renderowane na stronie czy jeśli musimy
z jakiegoś powodu odwrócić elementy za pomocą flex-direction reverse
no to wtedy musimy upewnić się że nawigacja dalej ma sens
a nie jest to odwrócone tak jakbyśmy jechali od dołu
do góry co nie jest naturalne dla naszego języka i może po prostu powodować
zakłopotanie użytkowników jak to możemy naprawić oczywiście możemy pozamieniać kolejnością te
miejsca te elementy formularza tylko nie wiem czy to jest sens skoro
użyliśmy po prostu właściwości reverse co
jeszcze można zrobić no przede wszystkim najlepiej byłoby po prostu się pozbyć tego
reversea ale jeżeli nie mamy takiej możliwości z różnych powodów bo na przykład
robimy customowy komponent bez javascriptu o ocenie
gwiazdkami ja zrobiłem na youtubie poradnik na ten temat to musimy
naprawić tą nawigację klawiaturą w inny sposób i jest na to sposób
ale generalnie nie korzystajcie z tej właściwości
poza dwoma wartościami chodzi mi o tabindex i
tabindex ma jakby trzy stany tabindex minus 1 oznacza
że element nie będzie focusowalny z poziomu klawiatury w ogóle na
razie możemy to wykomentować czyli jeśli ustawimy sobie tabindex minus
1 oczywiście nie na labelce tył elemencie który chcemy sfokusować
no to zaczynamy się tabować i ten first name jest ominięty
czyli on jest już niedostępny z klawiatury czasami jest warto robić tabindex
minus 1 zwłaszcza kiedy chcemy robić programowe przekierowywanie skupienia
poza tym raczej się nie używa tabindexu chyba że musimy naprawić jakiś bug
na przykład związany z fokusowaniem się elementów które normalnie nie powinny się fokusować
na przykład safari focusuje elementy svg z tego co pamiętam więc
generalnie obrazki nie powinny łapać fokusu a safari sprawia że faktycznie
można ten focus złapać więc tam można ustawić tabindex minus 1 żeby naprawić
błąd natomiast jeżeli będziemy ustawiać tabindex minus 1 na elementach formularza na to one oczywiście
będą niedostępne z klawiatury ale będzie można je fokusować ręcznie za pomocą myszki
na przykład do tabindex minus 1 jeszcze wrócimy naturalną jakby wartością
dla tabindexu jest 0 i wartość 0 jest
chyba najbardziej zdrową z właściwości dla tabindex ponieważ możemy
dać możliwość sfokusownia elementu który wcześniej nie był
focusowalny ponieważ mamy zadeklarowany tabindex ale zero
sprawia że element będzie fokusowany w takiej kolejności w jakiej jest w markupie
czyli jeśli zrobimy coś takiego
i damy tabindex 0 na first namea to faktycznie first name w tym
momencie jest focusowalny nie ma to za dużo sensu z punktu widzenia tego konkretnego
przykładu natomiast widać to łatwo że możemy dawać elementom
które wcześniej nie były fokusowalne z klawiatury stan skupienia że faktycznie
bedzie to przechwytywało i będzie to przechwytywało zgodnie z tym jak
jest w markupie umiejscowione jesli byśmy skopiowali tego tabindex 0 do
innych labelek no to faktycznie moglibyśmy się sfokusować najpierw na first name potem
na input odpowiedni last name i kolejne input to się przydaje
też zwłaszcza przy customcomponentach jeżeli musimy odtwarzać
jakieś funkcjonalności przeglądarki bo nie możemy korzystać z różnego powodu z natywnych
elementów no i tą najmniej przydatną częścią tabindexu
i tą której nie polecam używać jest używanie tabindexu z
wartościami większymi niż jeden dlaczego no jeżeli damy sobie tutaj tabindex
4 na przykład a tutaj damy tabindex
1 no to zobaczmy co się stanie wchodzimy na stronę ja tabuję jeden raz
i sfokusowało nam się najpierw email address dlaczego no bo tutaj ustawiliśmy
tabindex na 1 jeśli teraz sfokusujemy się ponownie to
przechodzimy na first name 4 dlaczego na 4 no bo on ma zadeklarowaną
wartość więc ma jakby priorytet to jest tak samo jak macie order we flexboxie
no i teraz cała reszta bedzie szła naturalnie według tego jak są w markupie
czyli last name password nie email address bo email address już
był no i date of birth i tak dalej jeżeli byśmy odpalili teraz accessibility insights for web
możemy to zrobić fastpass tab stops
włączamy no i teraz się tabujemy to widzimy że pierwszy sfokusował się email
address następnie fokusuje się first name następnie last
name password date of birth i dopiero textarea czyli
tutaj jest zupełnie zaburzony ten szyk nie możemy widzieć jednej prostej linii jeżeli
nie możemy widzieć prostej linii w accessibility insights for web no to znaczy że faktycznie
coś z tym outlinem jest nie tak no i zaczynamy od emailu potem jest first name last
name password date of birth dlatego generalnie nie polecam tego używać
bo jeżeli zaczynamy bawić się z tabindexem z wartościami dodatnimi no
to musimy je zaaplikować tak naprawdę wszędzie żeby to miało sens no i to jest
po prostu bardzo złe w zarządzaniu jest bardzo ciężkie w utrzymaniu i
no generalnie potraktujcie to jako ciekawostkę ale jeżeli chodzi o accessibility
to tabindex z wartością większą niż 1 przepraszam
z wartością większą niż zero jest zły natomiast wartości minus 1
i 0 są ok ponieważ pozwalają nam włączać bądź wyłączać focus na elementach które
mogą mieć bądź go nie mieć domyślnie