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.
W tej lekcji opowiem o skalowalnym tekście generalnie
tworząc strony internetowe bardzo często korzystamy z pikseli czyli wartości
która jest absolutna piksele będą zawsze w tym samym rozmiarze wyświetlane
jakie zadeklarujemy oczywiście to się różni w zależności od gęstości
pikseli na wyświetlaczu na retinie 16 pikseli nie będzie wyglądało tak
samo jak 16 pikseli na innym wyświetlaczu generalnie obietnicą
które piksele dają jest absolutne pozycjonowanie
tak jakby miały one się wyświetlać jest to bardzo szeroki temat to co chciałem opowiedzieć
w tym w tej konkretnej lekcji tutaj na przykładzie woodworkingu uczyli
tym konkretnym przypadku jak wkręcić śrubę w deskę tak by ona po
prostu nie pękła że dla niektórych użytkowników tekst domyślny
może być niestety zbyt mały no i co w takich sytuacjach użytkownik
może zrobić jeżeli użytkownik jest na urządzeniu mobilnym no to już ustaliliśmy
że może użyć gestu pinch to zoom żeby powiększyć sobie interfejs
chyba że faktycznie będzie się znajdywało tutaj user scalable no user scalable
no wyłącza możliwość pinch to zoom i to akurat jest widoczne u
nas w tym przykładzie więc to jest bardzo zła praktyka takiech rzeczy proszę nie
robić to możemy stąd usunąć od razu i to wiemy że to już jest o wiele lepiej bo
po prostu jeżeli tekst będzie za mały na to użytkownik sobie zrobi ten gest i tekst
będzie dla niego większy mniej oczywistą rzeczą jest sytuacja jeżeli chodzi o urządzenia
stacjonarne desktopy jeżeli mamy zbyt mały tekst no to jest tutaj kilka możliwości
którymi możemy się ratować żeby go powiększyć jednym z nich jest użycie
albo controla i gałki myszy aby po prostu
go zwiększyć można tego użyć też control plus command plus w zależności
od systemu operacyjnego no i wtedy będziemy mieli takie oto przybliżenie
jest jakby ok rozwiązanie na chwilę natomiast wyobraźcie
sobie że do każdej strony która wam nie pasuje musicie zrobić sobie control
plus control minus i te właściwości nie zapisują się pomiędzy przejściem w kartach bo tak się
dzieje w większości przeglądarek firefox w wersji no nie chcę skłamać w
jakiejś nowszych releases z stycznia 2020 udostępnił
możliwość ustawienia zooma dla całej przeglądarki czyli taki
zoom jak tutaj robimy sobie w ten sposób może być stały dla każdej podstrony którą
ustalimy z tego co wiem inne przeglądarki takiej możliwości nie dają
to co dają inne przeglądarki w tym firefox jest możliwość
zmiany domyślnego font-size dla przeglądarki czy jeżeli
wejdziemy sobie w tutaj w ustawienia na macu możecie to zrobić za pomocą command przecinek
tylko tutaj w tym podglądzie nie mogę tego zrobić więc ja może po prostu otworzę
tutaj nowe okno chrome no i tutaj przejdziemy sobie
do localhost 3000 i wejdziemy
tutaj w ten sposób więc jesli weźmiemy sobie w ustawienia wejdziemy czyli
command przecinek no to mamy możliwość zmiany rozmiarów font size
możemy tutaj wpisać font i widzimy że domyślnie jest medium
recommended jeżeli zmieni to sobie na very large to widzimy że tutaj
interfejs już się zupełnie zmienił natomiast na stronie z jakiegoś
powodu nie przeniesiemy sobie tutaj ten woodworking i otworzymy
ten stąd no i zmniejszymy okienko
będzie o wiele wygodniej no i teraz command przecinek będzie nam działał jak widzimy że
tutaj mamy już font size ustawiony na very large jeśli
to zamkniemy to jakby nie zmienia to w ogóle naszego wyglądu dlaczego otóż
dlatego że w naszym przykładzie użyte jest pozycjonowanie ustalanie rozmiaru
tak naprawdę naszego fonta za pomocą pikseli czyli całe nasze body będzie
miało domyślne 16 pikseli które jakby jest takim standardem dla większości przeglądarek
jako ustawienie domyślne więc to wygląda ok na większości przeglądarek
które nie są zupełnie w żaden sposób skonfigurowane możemy to zmienić i faktycznie widzimy
że już ten tekst wygląda zupełnie inaczej dlaczego ponieważ usuwając
tą regułę uwolniliśmy możliwość przeglądarki do resize tego
tekstu jeśli zmienimy teraz ten font na standardowy
i zamkniemy no to znowu ta strona wygląda tak samo jak wyglądała z pikselami tak
tutaj nie ma żadnej różnicy tu już się strona przeładowuje wygląda identycznie
tak samo natomiast bez tego dajemy użytkownikowi możliwość zmiany
tego z poziomu przeglądarki niektórzy mogą sobie ustawić mniejszą czcionkę ponieważ
tak naprawdę mają na przykład okulary dodatnie no i wolą mieć mniejszy tekst przed sobą
jest kilka opinii w internecie że generalnie nie powinno się tym
przejmować że można pisać wszystko w pikselach jak to jest no bo jeżeli ktoś komuś
to faktycznie przeszkadza to nie będzie tego zmieniał na poziomie przeglądarki tylko
zmień to w systemie i o ile jest to poniekąd prawdziwe że można zmienić to
ustawienie na poziomie systemu i wtedy nawet piksele zostaną zeskalowane
w górę nie pokrywa to w pełni idei dostępności ponieważ
zabieramy użytkownikowi feature które są tam ale
my z naszego powiedzmy lenistwa programistycznego no odbieramy użytkownikowi
możliwość customizacji z poziomu przeglądarki a dlaczego ktoś mógłby chcieć to robić no załóżmy
że mamy jeden komputer współdzielony na całą rodzinę no i babcia korzysta
z chrome o jakimś profilu takim albo korzysta z internet explorera
nie wiem i chcemy żeby babcia miała większy tekst no bo babcia niedowidzi ale
dla nas nie ma to większego sensu więc zmiana ustawień systemowych nie
zadziałała by dla nas w takim przypadku a idea jednego komputera dla
całej rodziny wcale nie jest tak nowa zwłaszcza że jest dużo rodzin ubogich
dalej które też korzystają z internetu więc generalnie jedna prosta zasada
jeżeli jest jakiś mechanizm który został zaimplementowany przez przeglądarki działa
to nie psujmy go proszę i nie brońmy się argumentem że można to
zmienić na poziomie systemu i to i tak będzie działać nawet jeżeli zrobimy to sposób niepoprawy
który nie podąża za dobrymi praktykami wrzucę wam w linkach generalnie źródła
do których się teraz odnoszę jak możemy tworzyć nasze layout żeby były dostępne
możemy użyć remów czyli jednostek relatywnych remy
różnią się o emów w tym że remy odnoszą się jakby do core całego
dokumentu czyli są one bezwzględne a emy są względne jeżeli
tutaj zmienimy od razu też powiedzmy na jednego rema marginesy
i na 1,4 rema line-height font-size możemy
na 1 rem wszędzie nic się nie zmieniło bo mamy
medium size to w tym momencie zadziała nam oczywiście
ta funkcja i tekst jest większy ale
co ciekawe jeśli będziemy się odnosić do poszczególnych elementów poprzez
emy to one będą relatywne do tego do rozmiaru swojego
rodzica to znaczy jeżeli ustawimy na a font-size powiedzmy
2 em to będzie to dwukrotność rozmiaru rodzica jeżeli ustalimy
to na 0,8 em no to będzie to 80%
rozmiaru rodzica czyli w tym wypadku body niektórzy powiedzą że może
to być ciężkie jeżeli chodzi o tłumaczenie designów do html
i css jeżeli mam na przykład plik psd photoshopa bo niektóre
agencje dalej w takich formatach dostarczają nam informacje no to wszystko jest w pikselach
na i trzeba w tych pikselach robić nie trzeba tego robić w pikselach jest kilka sposobów
na to żeby pisać tekst który będzie się skalował a jednocześnie odnosząc się do
faktycznej relacji rozmiarów tak jak było na designie jednym
z nich jest ustalenie po prostu na body font-size 16
pikseli a całą resztę robienie przepraszam nie font-size 16 pikseli tylko
oczywiście 62.25 dlaczego otóż
jakby jest to po prostu obliczone że tyle będzie to 10 pikseli i teraz
możemy pisać w remach na zasadzie tak jakby to były piksele czyli 1 rem
będzie to 10 pikseli czyli jeśli chcielibyśmy ustawić na czymś font-size 16
pikseli to może napisać 1.6 rem i będziemy to mieli w ten sam sposób ale jeśli
ktoś zmieni rozmiar według tego co zostało zadeklarowane
w przeglądarce no to będzie mu się ten tekst oczywiście skalował jakby minus tego
jest taki że po pierwsze domyślnie serwujemy coś co jest o te 30
ileś procent mniejsze niż to co użytkownik zarequestował
czy jeżeli nie zrobimy takiej reguły na body która będzie nadpisywać wszystkie domyślne style
niektóre elementy interfejsu mogą być bardzo za małe jeżeli nad tym nie
panujemy a jeżeli korzystamy z preprocesorów css jak na przykład sass less
stylus jest ich bardzo dużo no to możemy skorzystać ze specjalnego mixinu
który pozwoli nam pisać wartość w pikselach i sam automatycznie będzie to tłumaczył na
remy jest to jakby dodatkowy kroko o którym trzeba pamiętać natomiast jeżeli jesteście
na projekcie front-endowym który ma już tam niewiem czytaj skrypta czy sasa
czy granta webpacka generalnie jakikolwiek module bundler
czy task runner możecie skorzystać z tego typu mixinów i będzie to o wiele
lepsze niż ustawienie pikseli na stronie no
i oczywiście jakby sam rozmiar wyświetlania nie wpływa zupełnie na czytniki ekranowe
ponieważ one czytają treść i nie zwracają uwagi na to jakiego coś jest rozmiaru
na stronie czyli musimy dalej używać semantycznych tagów jak na przykład właśnie headingi paragrafy
artykuły jeżeli chcemy coś uwydatnić dla użytkownika screen
readera no i na szczęście użytkownicy screen readerów mogą dowolnie modulować
głos który jest do nich mówiony czyli tak jak my tutaj zmieniamy rozmiar wyświetlanego
tekstu no to nie możemy wpływać na pitch tempo czy
generalnie nasycenie głosu który do nas mówi z za ekranu co bym chciał
żebyście wyjęli z tej lekcji nie stylujcie w pikselach to jest najważniejsze czy będziecie
używali remów emów czy procentów na body czy jakiegoś mixina
css-owego nie ma to znaczenia po prostu dajcie użytkownikowi możliwość dostosowywania
rozmiaru czcionki z poziomu interfejsu przeglądarki