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 i powiem ci jak ukrywać treści
przed czytnikami ekranowymi no dlaczego ktoś może chcieć to robić
ponieważ niektóre rzeczy czytniki ekranowe no generalnie nie powinny czytać
ponieważ doświadczenie dla użytkownika wizualnego i użytkownika
czytnika ekranowego będzie się troszkę różnić generalnie powinniśmy unikać
szumu informacyjnego na naszych stronach jeżeli projektujemy pod czytniki ekranowe
no jeżeli wejdziemy jeszcze raz w ten przykład
no to na pewno ten detektive img alt
jak zwykle możemy tutaj schować ten secret możemy też
ukryć na dobrą sprawę bo co jeśli akurat się zdarzy że ktoś ma myszkę położoną
na tym elemencie
jeżeli
będzie miał przypadkiem ktoś tam myszkę no to ten secret się przeczyta a to nie jest wymowne
bo ani nie wiemy że trzeba to kliknąć ani nie nie wiemy czemu ten secret tam jest no bo on
jest przed całą więc nie mamy wprowadzenia czemu on się tam znajduje w związku
z czym możemy to ukryć no ale nie chcemy tego ukrywać usuwając to no bo jeżeli
to usuniemy
jeżeli to usuniemy aha tutaj mi się coś nie odświerzyło w każdym razie jeżeli
tutaj usuniemy sobie ten secret
no to faktycznie nam się nie przeczyta ten secret
bo już go nie ma w markupie natomiast jak najedziemy myszką na ten element no
to już nie mamy tego napisu secret który chcielibyśmy odczytać wizualnie
faktycznie no to generalnie co można zrobić to użyć
znaczników aria to są te atrybut o których wcześniej już wspomniałem które jakby
uzupełniają html w momencie kiedy on nie ma już semantycznie
możliwości czegoś wyrazić jednym z takich bardzo podstawowych znaczników atrybutów
aria jest aria-hidden no tutaj widzieliśmy że jest ich bardzo dużo
vs code nam podpowiada różne możliwości jeżeli chodzi
o przerobienie całej aria no to zdecydowanie jest to materiał na osobny
kurs natomiast aria-hidden jest takim bardzo podstawowym i bardzo przydatnym
atrybutem który pozwala ukryć element przed czytnikiem ekranowym
czyli jesli damy aria-hidden o wartości true na ten div
o klasie game no to wszystko wewnątrz tego diva będzie niedostępne dla
czytnika ekranowego jeśli teraz to odpalimy
to przeczytało nam się almost there
ja zrobiłem strzałkę w górę natomiast my polecieliśmy na dół ponieważ chromevox
ma wrap to top wrap to bottom czy jeżeli się osiągnie koniec
treści z którejkolwiek strony no to on się zawija z drugiej strony no i jeżeli spróbujemy jeszcze raz wejść
na tego detectiva
był dźwięk że to jest koniec w związku z czym wszystko co zawrzemy wewnątrz
znacznika który ma na sobie aria-hidden będzie niedostępne dla czytników ekranowych
jeżeli damy to na body co jest bardzo złą praktyką ale widziałem
strony internetowe które faktycznie to robiły zapiszemy
no to cała strona będzie niedostępna nie będzie zupełnie nic
wystawione dla czytnika ekranowego jak się spróbujemy teraz poruszać potem
no to słyszymy że nie ma zupełnie nic w żadną stronę czyli strona jest pusta anonsuje się
tylko i wyłącznie tytuł strony więc ostrożnie z aria-hidden ponieważ
no można bardzo skrzywdzić użytkowników w ten sposób pierwsza zasada ara
to generalnie jeżeli nie trzeba jej używać no to nie używamy aria
za pomocą aria możemy na przykład odtworzyć niektóre zachowania semantyczne
natywnych elementów ale pierwsza zasada jest taka że jeżeli są natywne elementy
które dostarczą tą samą funkcjonalność powinniśmy korzystać z nich a nie z aria
natomiast tutaj w tym przypadku do tego diva o klasie game
jest to jak najbardziej ok no i co jeszcze możemy ukryć możemy
ukryć te emoji ponieważ jeżeli tutaj je przeczytamy sobie
czytanie emoji jest bardzo
ciekawym przypadkiem generalnie często jest to
treść która nie jest potrzebna do zrozumienia przekazu trzeba byłoby tak naprawdę
zrobić ankietę użytkowników czytników ekranowych czy lubią słuchać emoji
natomiast z mojego punktu widzenia jest to treść dodatkowa która
nie jest potrzebna do zrozumienia całego kontekstu no i jakby przerywa nam
normalne flow czytania ponieważ jak my czytamy wizualnie no to czytamy
who could do such a thing i nie czytamy emoji na głos czy nie czytamy go w głowie po
prostu widzimy reprezentacje emocji za pomocą emoji w związku z
czym dla czytników ekranowych można to ukryć no i możemy tak samo jak w przypadku
spana i ustawienia konkretnego języka na niej możemy zrobić sobie span
aria-hidden ustawić
na true no i wstawić to emoji do środka no i oczywiście analogicznie tutaj
też tak samo span aria-hidden
true zapisujemy
czasami może się zdarzyć że znaki
tego typu jak quot będą się teraz czytać natomiast to się różni w zależności
od czytnika ekranowego i już ja bym zostawił to w ten sposób nawet jeżeli chromevox
nam to przeczyta a wydaje mi się że czyta
no i widzimy że w ogóle teraz czytnik ekranowy robi nam tutaj pauzę
pomiędzy emoji a tym co jest przed emoji a tym co jest po emoji czyli
musimy tutaj w chromevoxie na przykład przeczytać to 2 razy zrobić dwie interakcje ale to ma
tutaj nawet sens ponieważ jakby czytamy najpierw
who could do such a thing
you might ask nawet ma tutaj sens jeżeli się to przeczyta na głos jeżeli przejdziemy do następnego
paragrafu no to nie ma tutaj tej informacji o
tym emoji ale jest informacja o tym quotcie
jeżeli nie chcielibyśmy czytać tych quotów no to moglibyśmy teoretycznie użyć pseudo
elementów i tam to umieścić w treści jako content natomiast
nie uważam że to jest coś złego w tym momencie i właśnie w ten sposób chowa
się treści przed czynnikami ekranowymi można tutaj oczywiście dać aria-hidden false natomiast
domyślnie jakby nic nie jest ukryte w aria jeżeli jest semantyczne jeżeli
zrobimy sobie aria-hidden false
w tym miejscu na to jest to jakby redundancja w tym momencie ten element
i tak nie byłby ukryty w aria domyślnie więc nie musimy tego robić jeżeli
chcemy coś ukryć natomiast no to oczywiście możemy zrobić aria-hidden na true