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 więcej o outline i generalnie innych
mechanikach do tworzenia wskaźnika fokusu w poprzednim
przykładzie zrobiliśmy taki oto outline który pokrywa i checkboxa
i labelkę no i jest całkiem ładnym kontrastowym outlinem
tylko jest jeden z nim problem generalnie outline
ma to do siebie że on nie jest częścią box modelu box model
składa się na to że każdy z elementów ma swój padding
swój margin tak dokładnie wygląda box model no i tutaj mamy
na przykład narysowane że box model składa się z bordera paddingu
oczywiście samej treści no i tutaj jest jeszcze margines
margines jest jakby poza częścią box modelu i tak
samo jest z outlinem outline nie jest w środku box modelu jake
to ma znaczenie ponieważ jeżeli zrobimy overflow hidden to cała treść która
nie będzie zawarta tutaj do bordera zostanie ucięta czyli jeżeli
mamy outline i na rodzicu utniemy to
co z niego wystaje z tego rodzica poprzez overflow hidden to
utniemy sobie outline w tym momencie ten outline tam jest tylko
że jest ucięty poprzez overflow hidden jeżeli zrobiłem overflow visible to jest jako domyślną
wartością no to faktycznie ten outline tu jest jakby
to jest wada kolejna wada domyślnego outlineu i to
jest też wada wszystkich metod pozycjonowania które wymagają
renderowania czegokolwiek poza box modelem danego elementu można
to oczywiście obejść można to obejść na kilka sposobów jednym z nich jest po prostu
użycie koloru więc zrobimy tutaj overthrow hiden żeby
zasymulować taki przypadek takie rzeczy się zdarzają no i zamiast robić tutaj outline
zrobimy inaczej możemy powiedzieć żeby na każdym inpucie
który sfokusujemy dla jego labelki ustawić inny kolor tła
czyli zrobimy sobie tutaj background na niebieski
no i faktycznie to działa z tym że teraz jako
że to jest spozycjonowane absolutnie to nam zakrywa całą treść która tam jest więc możemy
tego beforea przenieść jedną warstwę niżej poprzez z-index i
teraz faktycznie to widać tylko że mamy słaby kontrast ponieważ jest niebieski jako
tło no i biały jako kolor tekstu i to ma bardzo słaby kontrast więc możemy jeszcze zrobić
że na input focus nie tylko labelka będzie zmieniała kolor ale
również leibel tutaj kolor tekstu
będzie się zmieniał czyli zrobimy sobie var black tutaj
zmieniamy kolor na pseudo elemencie before dlatego nie możemy tego koloru zmienić tutaj
zapisujemy odświeżamy i faktycznie w tym momencie
wygląda to całkiem ok i nieważne czy tutaj jest ten overflow hidden czy nie i
tak widzimy który element mamy sfokusowany można pójść nawet
krok dalej i sprawić żeby zaznaczenie elementu pokazywało
że dany element jest faktycznie zaznaczony możemy do tego wykorzystać css custom
properties więc tutaj zadeklarujemy sobie nową zmienną color może
zrobimy to na samej labelce ja
oczywiście tutaj korzystam z stylowania po targach w prawdziwym projekcie stylowali
byście po klasach nie bo tagach natomiast na potrzeby projektu i prostego
tłumaczenia ja tutaj styluję to po targach no i zmieniamy tutaj kolor domyślnie
będzie to kolor biały ponieważ
taki kolor mają nasze labelki no i możemy tutaj ustawić color na
var white jakby nic się nie zmieniło ale dzięki
temu możemy zmieniać po prostu wartość tej zmiennej na focus zapisujemy
i teraz musimy tylko jeszcze jako że tu jest taka sytuacja że
mamy jeszcze dodatkowe selektory no to może tutaj ten kolor jeszcze raz zadeklarować
color zapiszmy dobra
to działa no i teraz na input checked input checked
label będziemy zmieniali color na powiedzmy
zielony zobaczmy co się stanie tutaj
wygrywa nam chyba specyficzność więc to przenieśmy niżej zapiszemy
tak i teraz się to nam zaznacza na zielono tylko
że my nie chcemy zmieniać koloru tutaj tekstu tylko chcemy zmienić kolor
tła czyli tutaj robimy before i tutaj możemy zrobić zamiast background
na blue to zrobić po prostu background na color wpisujemy zobaczymy
co się stanie tutaj nam się usunął tekst a to dlatego bo
zielony nam się jeszcze nie zaaplikował zastanawiam się tylko czemu
tutaj mamy var color powinniśmy prawdopodobnie tutaj zadeklarować
ten color domyślnie jako blue o
i teraz w momencie zaznaczenia faktycznie widzimy że element
jest zaznaczony ponieważ labelka robi się zielona no i możemy
jeszcze zostawić taki dodatkowy zbiór selektorów aby po zaznaczeniu
faktycznie jeżeli się wyfokusujemy z tego elementu on dalej pozostał zielony no
i to wystarczy zrobić na zasadzie ustalenia coloru input
focus label to nam zmieni element na którym obecnie jesteśmy
a my musimy zrobić input checked label również
na color zielony zapiszmy zobaczmy czy to zadziała w
ogóle nie zadziałało tu ustawmy sobie w takim
razie jeszcze raz ten color zapiszmy
no i teraz to oczywiście zadziałało moglibyśmy
tak naprawdę połączyć kilka z tych selektorów w jeden tylko
że tutaj mamy inne deklaracje styli to może to tak zostawmy generalnie co chciałem pokazać nie
trzeba używać javascriptu aby zadeklarować większość takich przypadków
tutaj ten zielony nam się nadpisuje więc to
powinniśmy pewnie tutaj wrzucić to jest walka ze specjalnością
tak no i teraz oczywiście to działa nie musicie używać javascriptu
do takich rzeczy jak właśnie podświetlanie outlineu i nie ma jakby problemu
z tym jeżeli outline nam się ucina bo możemy to ostylować w inny sposób na przykład
poprzez background color używane pseudo elementów czy inne
techniki jeśli chodzi o css custom properties nie jest to temat trudny natomiast
nie chcę za bardzo wchodzić tutaj w ich mechanikę ogólna reguła
jest taka że możemy zadeklarować sobie własną zmienną i użyć jej w
ten sposób w kolejnej lekcji przekażę jak jeszcze w inny
sposób można ostylować wskaźnik skupienia używając do
tego właściwości border oraz box shadow