od Podstaw
4 godz. 7 min · HTML i CSS · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerFlexbox nie jest trudny - pod warunkiem, że rozumiemy dlaczego elementy renderują się w konkretny sposób. Do tego potrzebna jest szczegółowa wiedza o osiach flexboxa, o tym jak ustalane są ich kierunki i jak elementy będą układać się wzdłuż nich.Dopiero wtedy dobrze można zrozumieć jak działa rozszerzanie i kurczenie elementów, jak elementy będą zachowywać się przy zmianie rozmiaru okna przeglądarki czy przy przełączaniu wyświetlania z układu wierszy na kolumnowy. To wszystko oraz kilka innych mechanizmów ukrytych we Flexboxie znajdziesz dokładnie wyjaśnione w tym kursie - podgląd przykładów czy dodatkowe quizy po zakończeniu kursu pomogą w utrwaleniu zdobytej wiedzy.
Wielu developerów nie jest świadomych, że korzystanie z niektórych właściwości Flexboxa wpływa na dostępność naszych stron WWW - dostosowywanie naszych witryn pod czytniki ekranowe oraz użytkowników korzystających z witryn w sposób niestandardowy to temat który zyskuje na coraz większej popularności (zwłaszcza, jeśli planujesz kiedyś tworzyć strony rządowe - te są zobligowane do tworzenia stron dostępnych dla osób niepełnosprawnych).W tym kursie, dowiesz się jakie problemy może nieść za sobą używanie flexboxa i jak ich unikać.
Kurs ten jest dla wszystkich osób, które dobrze czują się z CSS - wystarczy podstawowa umiejętność pisania selektorów. Nie ma żadnych wymagań dotyczących JavaScript, czy znajomości konkretnych frameworków. Natomiast jeśli do tej pory korzystałeś/aś z innych, starszych technologii do pozycjonowania elementów i chcesz nauczyć się prostszej, dobrze wspieranej współczesnej technologii - nie trać czasu! Flexbox to idealne wprowadzenie do kolejnych sposobów pozycjonowania jak np. CSS Grid.
Cześć witam cię w kolejnej lekcji z kursu flexbox od
podstaw przedstawię ci jeszcze jeden problem który flexbox
może tworzyć i też jest związany z rozstrzałem pomiędzy tym
co użytkownik widzi a tym co jest zadeklarowane w markup'ie jeśli
ustawimy sobie na
konkretnych kartach inny
order to znaczy ustawimy order minus 1 na
karcie numer 5 tak aby ona znalazła się jako pierwsza no
i może jeszcze tutaj coś pozmieniajmy czyli karta numer dwa będzie
ostatnia ja ci tylko przypomnę dlaczego w ten sposób to działa ponieważ
domyślnie wszystkie dzieci flexboxa mają ustawione
order na zero więc ustawiając wartości mniejsze bądź większe
na pojedynczych kartach wypychamy je na początek lub koniec i
spróbujmy w tym momencie ponawigować się po jednej stronie ponownie
tylko że utrudnimy jeszcze jedną sytuację czyli usuniemy focus
czyli usuniemy outline na focusie co
jest bardzo złą praktyką i nie polecam tego robić na faktycznych stronach www przynajmniej
nie w tej formie i spróbujmy teraz się po tej stronie ponawigować ja
naciskam tab natomiast my zupełnie nie widziemy na którym elemencie
jesteśmy oczywiście tutaj jako użytkownicy którzy widzą
zarówno ui przeglądarki jak i jej treść możemy wywnioskować
że znajdujemy się na linku numer dwa natomiast nie jesteśmy w stanie stwierdzić która
z tych kart zawiera link numer dwa więc to co ja tutaj przedstawiłem
z tym usuwaniem outline jest tylko na potrzeby tego przykładu i
abyś zrozumiał bądź zrozumiała w czym jest problem z
używaniem tego typu reguł aby zwizualizować to jak
użytkownik tego narzędzia będzie się poruszał po witrynie na systemie max os dostępny jest
czytnik ekranowy voice over aktywuje się go domyślnie
za pomocą skrótu klawiszowego command f5 voiceover on chrome
flexbox google com window visited link third card has keyboard focus
you are currently on a link inside web content to click this link press control option space
to exit this web area press control option shift up arrow
tak ja zostawiłem tutaj reader'owi przestrzeń żeby mógł się wypowiedzieć i
generalnie działa to na tej zasadzie że my możemy się nawigować po stronie za pomocą taba za
pomocą skrótów klawiszowych danego screen reader'a i screen reader
będzie nam przedstawiał głosowo na jakim elemencie
się faktycznie znajdujemy zwróć uwagę że pomimo tego iż outline
na danym elemencie jest usunięty to screen reader i tak zaznacza ten element natomiast
nie jest to zbyt rzetelne wskazywanie elementów screen reader'y mają z tym duży
problem dlatego to tylko pokazuje jak ważne jest to
wskazywanie na którym elemencie obecnie się znajdujemy i proszę nie
traktuj tego na zasadzie że screen reader'y i tak przedstawią
na jakim elemencie się znajdujemy ponieważ nie wszyscy korzystają ze screen reader'ów i
osoby które nie będą korzystały ze screen reader'a natomiast będą używały tabów
do nawigacji po stronie w tym momencie będą poszkodowane po
prostu zostawiaj ten outline jeśli na przykład wykryłeś że
użytkownik nacisnął tab i teraz będziemy się nawigować po tej stronie ja
użyję skrótu klawiaturowego voice over czyli taki przycisk specjalny modyfikator
do obsługi voice over'a i strzałka w prawo aby przejść do następnego elementu
i zobaczymy na którym się znajdujemy więc naciskam voice over strzałka w prawo visited link
fourth card więc znajdujemy się na czwartej karcie klikam
tu ponownie link fifth card znajdujemy się na tamtej karcie natomiast
zobacz wizualnie ona jest w nieprzewidywalnym miejscu visited link sixth card jesteśmy
na szóstej karcie i przeskoczyliśmy z karty niebieskiej na białą więc
mamy zupełny rozstrzał pomiędzy tym co jest widoczne na ekranie
a tym jak nawigujemy się po naszej witrynie za pomocą
klawiatury ponieważ jeśli teraz odkryjemy ten
nasz content wyłączę w tym momencie screen reader'a
żeby nam już nie przeszkadzał to okaże
się że czerwona karta nie ma numeru 1 żółta karta nie ma numeru 2 i tak
dalej zobaczmy jaki faktycznie flex nadał nam layout
dzięki tym selektorom które tu stworzyliśmy więc widzimy że pierwszą kartą
którą użytkownik widzi jest karta numer 1 drugą kartę jest karta numer 4
trzecią jest karta numer 2 czwartą jest karta numer 5 piątą jest
karta numer 3 i akurat szósta karta jest w tym miejscu w którym
być powinna więc jeśli teraz przywrócimy sobie ten focus
z outline'm już nie będziemy tego selektora
więcej pisać to zobaczysz że ja się teraz nawiguję wstecz i
dalej nawigujemy się zgodnie z tym jak jest to widoczne
na ekranie czyli jest kartą numer 5 karta numer 4 karta
numer 3 karta numer 2 i karta numer 1 ten problem nie jest jedynie
problemem flexboxa jest też problemem css grid'a jest też problemem
pozycjonowania absolutnego generalnie każdej sytuacji
kiedy my wizualnie przestawiamy jakiś element w ten sposób że czytając
naturalny dla danego języka sposób element znajduje się
w markup'ie w innym miejscu niż użytkownik mógłby się spodziewać patrząc
tylko na efekt wynikowy strony więc jak rozwiązywać
tego typu problemy niestety może to cię zmartwi natomiast nie ma możliwości aby
w css ustawić jakąś właściwość która nam
zapewni powiązanie tego co mamy wizualnie z tym co się faktycznie znajduje
w markup'ie więc jedyne co mogę polecić jeśli to jest faktycznie przypadek
który musisz obsłużyć a będzie tak jeśli będziesz musiał spełnić pewne
wymagania dotyczące dostępności na przykład jeśli będziesz tworzył strony rządowe
ponieważ te są zobligowane do implementacji konkretnego standardu dostępności
jest uregulowane prawnie bądź po prostu z empatii rozwiązaniem
jest po prostu nienadużywanie właściwości orders flexboxa
jest nienadużywanie flex-direction z
wartościami o sufiksie revers ponieważ to odwracanie kolejności jest największym
problemem nie czy elementy układają się z góry do dołu i jeśli faktycznie
masz przypadek że na danym breakpoint'cie chciałbyś chciałabyś
aby elementy układały się w innej kolejności to nie
piszemy tego w ten sposób ale za pomocą javascriptu
możemy zmienić kolejność elementów w markup'ie i czytniki ekranowe
wtedy poprawnie przeczytają to co znajduje się na ekranie
nie jest to na pewno najprostrza droga natomiast jeśli chcemy tworzyć w pełni
dostępne strony www to jest to chyba najlepsze ogrodzenie
sytuacji tak byśmy mogli tworzyć strony które są wizualnie
atrakcyjne i żeby screen reader'y dobrze je czytały oczywiście
jeśli korzystamy z różnych frameworków takich jak vue angular czy
react przy renderowaniu tego rodzaju list linków prawdopodobnie
mielibyśmy tablicę elementów i tą tablicę po prostu moglibyśmy odwrócić
więc jeśli korzystamy z frameworków jest to troszkę ułatwione
implementacja tego nie jest faktycznie problemem a sam fakt dbania o
dostępność stron www na pewno w oczach potencjalnego
pracodawcy będzie sygnałem że nie jesteś zwykłym tylko
że dbasz o zagadnienia i rozwijasz się na własną rękę dbając
o rozwiązywanie niebanalnych problemów podsumowując
to co chciałbym żebyś wyniósł z tej lekcji
jest to że czytniki ekranowe i użytkownicy
klawiatury dalej będą w podstawowych przypadkach operować
na w kolejności która jest zdefiniowana przez markup a nie to jak elementy
są wyświetlane za pomocą css'a że jest coś takiego jak screen reader'y jeśli
korzystasz z mac os jest możesz skorzystać z wbudowanego voice over jeśli
nie to jest rozszerzenie do google chrome nazywa się chromevox
jest on dostępny na wszystkie platformy na których można
zainstalować google chrome i działa ona na analogicznej zasadzie jak voice over
tylko że jest rozszerzeniem do przeglądarki nie używaj flex-direction z
wartościami o sufiksie reverse jeśli dbasz o
dostępność stron www nie używaj właściwości order ponieważ
ona wprowadza chyba najwięcej zamieszania i te informacje na
pewno będziesz mógł przenieść też do zagadnień takich jak css grid czy
absolute positioning to wszystko w tej lekcji oczywiście
stosowne linki znajdziesz w odpowiedniej sekcji na platformie eduweb.pl a
w kolejnej lekcji przybliżę ci po prostu dodatkowe materiały które
będziesz mógł pogłębić na własną rękę dotyczące samego flexbox'a
do usłyszenia