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.
Hej witam cię w kolejnej lekcji z
kursu flexbox od podstaw i tym razem wrócimy do tematu
kolejności renderowania się dzieci flexboxa jak
już wiesz możemy odwracać kierunek renderowania
się elementów przy pomocy manipulacji flex-direction i flex-wrap
natomiast pojedyncze dzieci też mogą definiować jako
które powinny być wyrenderowane służy do tego właściwość order
jak kolejność i order domyślnie jest ustawiony na
wszystkich dzieciach flexboxa na 0 czyli elementy są układane
zgodnie z markup'em biorąc pod uwagę flex-direction i
flex-wrap jeśli zmienimy order dla
każdej karty na 1 2 3 czy 4 nie zobaczymy żadnej różnicy
w naszym podglądzie a dzieje się to dlatego ponieważ elementy które
mają taki sam order będą układane
zgodnie z kolejnością jak są zadeklarowane
w markup'ie to znaczy aby zobaczyć właściwość order
w akcji powinniśmy ustawić ją na pojedynczych
elementach na przykład na pierwszej karcie jeśli
ustawimy order na 5 to teraz już widzimy że
karta z numerem jeden była tutaj a przeskoczyła
na sam koniec i dlaczego tak się stało no
ponieważ elementy we flexboxie są sortowane rosnąco
to znaczy im większy order ma dany element tym później
będzie wyrenderowany w tym momencie wszystkie karty do
szóstej czyli druga trzecia czwarta piąta szósta mają order na 0 jest to wartość
domyślna i tylko pierwsza karta ma
order inny od zera i jest to 5 więc wartość
tej właściwości jest wyższa niż innych kart dlatego karta
pojawiła się na końcu natomiast teraz moglibyśmy tutaj wpisać 2 3 4 1
dalej element znalazłby się jako ostatni natomiast
jeśli na karcie drugiej ustawimy
inny order ja tutaj przekopiowaniem selector
więc na drugiej karcie według naszego markup'u ustawiliśmy
również order 1 i zobacz że elementy będą się układały
tak jak są definiowane w markup'ie czyli pierwsze
cztery elementy są pierwsze ponieważ mają order zero natomiast
karta z numerem 1 i karta z numerem 2 ułożyły
się w ten sposób ponieważ karta z numerem jeden jest zdefiniowana szybciej
w markup'ie a ma taki sam order jak karta z numerem 2 jeśli
na karcie z numerem 1 ustawimy w tym momencie order 2 to
zobacz że najpierw wyrenderowały się elementy z order
zero później wyrenderowała się karta z order 1 a
dopiero później karta z order 3 więc
to co jest ważne przy operacji na właściwości order
we flexboxie jest to że musimy pamiętać że domyślnie
każde dziecko wewnątrz kontenera o właściwości display
flex będzie miało order ustawiony na 0 i
aby zmienić położenie konkretnej karty musimy na tej konkretnej karcie
na tym konkretnym selektorze zmienić jego wartość oczywiście
możemy też ustawić elementy na
początku to znaczy jeśli chcielibyśmy aby karta z numerem 6
była
ustawiona jako pierwsza może w tym wypadku dać wartość
ujemną daje to naprawdę bardzo duże możliwości w kontekście manipulowania
layout'em zwłaszcza na różnych rozdzielczościach naszego
viewport'u i oczywiście kolejność flexboxa jest
również respektowana przez flex-direction czy jeśli zmienimy teraz flex-direction na
column to te elementy oczywiście wyrenderują się
w tym momencie jako kolumna natomiast kolejność
dalej zostanie zachowana czyli szóstka będzie pierwsza jedynka będzie ostatnia
ponieważ tak zdefiniowaliśmy to przy pomocy właściwości order tak
samo jeśli odwrócimy teraz kierunek osi main axis
na przeciwny przy pomocy sufiksu reverse to
elementy będą rysowane od dołu do góry natomiast kolejność
zostaje zachowana natomiast chciałbym tutaj uprzedzić
że właściwość order jest dosyć
ryzykowna w kontekście accessibility czyli dostępności naszych stron
www dla osób niepełnosprawnych dla osób które korzystają z czytników ekranowych
ten wątek poruszę w jednej z ostatnich lekcji tego kursu
natomiast w tym momencie chciałbym przestrzec jeśli
nie musisz używać orderu to go nie używaj do usłyszenia w kolejnej lekcji