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 ci o najczęstszych błędach
związanych z nawigacją klawiaturą generalnie tutaj można zrobić naprawdę długą sekcję
o tym i tak naprawdę będziemy o tym mówili jeszcze w kolejnym rozdziale który
będzie poświęcone tylko i wyłącznie nawigacji klawiaturą 1 rozdział będzie
poświęcony stylowaniu wskaźniku focusa więc będziemy jeszcze o
tym dużo mówić natomiast jest to takie wprowadzenie czego na pewno nie robić w kontekście accessibility
i nawigacji klawiaturą przede wszystkim zobaczmy co mamy na tej stronie
na mamy tutaj strony backpack of your dreams mamy do wyboru kilka plecaków
jest fajnie bo faktycznie każdy z tych przycisków ma
nazwę w sobie więc wiemy co kupujemy już się nauczyliśmy na poprzednich
naszych błędach że nie można zostawiać linków bez kontekstu no i tutaj jest jakaś treść i
browse more fajnie możemy zacząć nawigację powiedzmy
najpierw czytnikiem ekranowy
backpack of your dreams no i lecimy
dalej
tak więc dostaliśmy informację że jesteśmy
na elemencie listy dlatego warto też używać właśnie list numerowanych
bądź nienumerowanych w zależności od przypadku ponieważ dostajemy wtedy informację
że jesteśmy w liście ta lista ma ileś elementów no i możemy się po niej nawigować
bardzo fajna rzecz dlatego właśnie robi się nawigację w listach ponieważ możemy
się bardziej wymownie poruszać wtedy po takim elemencie natomiast czego
tutaj zabrakło nie dostaliśmy informację czy to jest link czy to jest button zobaczmy
jeszcze raz
to jest po prostu list item
dlaczego tak się dzieje ponieważ zrobiliśmy tutaj diva driva o
klasie call to action który ma data goto buy dakine no
i faktycznie jak zobaczymy sobie w javascryptach to tutaj jest
że każdy element który ma klasę call-to-action po kliknięciu będzie przenosił nas
na datasetem do tego goto które tam zadeklarowaliśmy widziałem
firmy które rozwiązywały to w ten sposób z różnych technicznych przyczyn natomiast to
rozwiązanie jest zupełnie niedostępne z kilku powodów po pierwsze nawigując się
czytnikiem ekranowym nie wiemy że możemy ten element kliknąć
nie ma żadnej informacji
o tym czy to jest element nawigacyjny czy to jest link czy to jest button nie ma informacji że
możemy to kliknąć jeżeli polecimy dalej
to widzimy że browse more jest linkiem bo faktycznie został
zakodowany jako a z href więc tak naprawdę
wszystkie te elementy powinny być albo buttonami albo linkami
wydaje mi się że powinny być linkami ponieważ tutaj mają data-goto i mają tutaj
jakąś kotwiczkę po pierwsze użytkownik czytnika ekranowego jeżeli będzie
zaanonsowany że jest to link będzie wiedział że można go kliknąć a po drugie będzie on dostępny
z klawiatury nawet jeżeli nie korzystam z czytnika ekranowego ja go teraz wyłączę
i jak już wspominałem możemy nawigować się po elementach interaktywnych
takich jak formularze buttony linki za pomocą taba czyli tabulacji
tab sam sfokusuje nam najbliższy element nawigacyjny
w tym momencie jest to browse more tutaj widoczne
no i oczywiście shift tab możemy wrócić do innego
elementu natomiast jest tutaj tylko jeden element nawigacyjny
dostępny z klawiatury te przyciski nie są dostępne z klawiatury ponieważ użyliśmy
do tego divów żeby sprawić że divy były
dostępne trzeba zrobić naprawdę bardzo wiele rzeczy trzeba dodać do tego tabindex
żeby element był focusowalny z klawiatury trzeba dodać mu odpowiedni outline
żeby był widoczny na którym elemencie jesteśmy obecnie czyli wskaźnik implementujemy
samodzielnie implementujemy obsługę zdarzeń na spację
na enter samodzielnie implementujemy rolę tak
być czytnik ekranowy przeczytał to jako przycisk też samodzielnie i
jakby tak sobie to podsumować użycie jednego znacznika button a 12 atrybutów
oraz garści js-a żeby odwzorować dokładnie
to samo zachowanie i trochę ułatwić sobie sprawę ze stylowaniem
jest zupełnie nieopłacalne jest generalnie złą praktyką jeżeli chodzi o performance który
też de facto wpływa na dostępność ponieważ jest dużo krajów
w którym dostęp do sieci nie jest jeszcze tak powszechny sieć 3g nie
jest nawet tak bardzo rozpopularyzowana na świecie w wielu miejscach na świecie będziecie
mięli sieć bezprzewodową bardzo powolną no i takie nawet zmiany
pokroju kilkanaście atrybutów więcej zamiast jednego znacznika będą miały
też znaczenie natomiast nie jest to w ogóle button to jest link jak już ustaliliśmy więc
możemy tutaj zaznaczyć sobie wszystkie te divy zrobić z tego a
w tym momencie jest to już link tylko nie ma jeszcze odpowiedniego
atrybutu href możemy go tutaj ustawić i tak naprawdę możemy
pozbyć się tego javascriptu usuwamy no
tutaj się oczywiście zrobiło podkreślenie ale to możemy sobie już jakby
naprawić samodzielnie czyli tutaj robimy sobie jeżeli to nam nie przeszkadza a
chcielibyśmy żeby call-to-action nie miał tego podkreślenia
no to robimy text-decoration none no i
już tego tutaj nie ma jeszcze jeśli chcielibyśmy ustalić jakieś rozmiary konkretne
dla tego elementu możemy nadać na nim display block ponieważ domyślnie
linki mają display inline więc atrybuty takie jak with czy
high nie będą na nie wpływać i po prostu możemy to zrobić jeżeli na tym zależy
divy są domyślnie blokowe i mają wpływ właśnie na nie te właściwości co
się teraz zmieniło zobaczmy z poziomu nawigacji klawiaturą widzimy
że jest tutaj już outline natywny może nie jest najlepiej widoczny ale jest
faktycznie obecny na stronie możemy na każdym z tych elementów się
nawigować tabem do przodu albo shift tabem do tyłu no i jeżeli
włączymy czytnik ekranowy
widzimy że jest to internal link internal dlatego
ponieważ ma kotwiczkę czyli nie przenosi nas poza naszą stronę no i każdy z tych elementów
jest teraz zarówno elementem listy jest linkiem no i ma
kontekst sam w sobie więc jest dosyć dostępny no i możemy go aktywować
z klawiatury możemy go aktywować za pomocą czytnika ekranowego możemy
też wyszukać możemy
też wyszukać linki z listy poprzez wbudowany w czytnik
ekranowy wyszukiwarkę czy jeśli teraz jesteśmy osobą niewidomą no
i uznaliśmy że och ale moim plecakiem marzeń jest dakine
no to wpisuję dakine
no i super i wiem że to są tylko dakine jeżeli były by tutaj inne jeżeli
byłyby tutaj inne plecaki dakine no to one oczywiście też by się wypisał że są następne
albo poprzednie więc mamy kolejną funkcjonalność tylko
i wyłącznie dlatego że użyliśmy adekwatnego znacznika html5 który
jest zgodny z sematyką tego co robimy to co chciałbym żebyście wynieśli z tej lekcji
jest proste używajcie znaczników które są do tego przeznaczone nie
starajcie się reimplementować funkcjonalności które już w przeglądarce
są na przykład linków w taki sposób jak tutaj zaprezentowałem na nagraniu
ponieważ będziecie to wszystko musieli zrobić samodzielnie będzie to kosztowne dla
was bo będziecie to sam implementować dla użytkownika bo on będzie musiał czekać
aż to wszystko się załaduje no i dla dostępności ponieważ domyślnie
divy nie są dostępne i nie będą dostępne z racji że są właśnie transparentne semantycznie
w kolejnych lekcjach dowiecie się więcej o tym jak nawigować się
za pomocą klawiatury jak tworzyć interfejsy które będą dostępne z klawiatury jeszcze
bardziej bo to tutaj jeszcze nie jest najlepszym co możemy osiągnąć