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 kursu flexbox
od podstaw i tym razem opowiem ci czym jest rozmiar
bazowy we flexboxie rozmiar bazowy ustawiamy za
pomocą właściwości flex-basis ustawionej na dziecku
flexboxa czyli flex-basis ustawiamy w naszym przypadku na
selektorze kart i domyślnie wartością flex-basis
jest auto czyli tak jak w przypadku innych właściwości
flexboxa nie musimy tego ustawiać to jest wartość która
jest ustawiona domyślnie i generalnie flex-basis
jest to takie width i height dla elementów flexboxa
czyli za jego pomocą możemy ustalać rozmiary poszczególnych elementów
które są pozycjonowane na flexie które są dziećmi kontenera
o właściwości display flex
i skoro flex-basis działa na takiej samej zasadzie jak width i height
to możemy spokojnie używać wartości
zakończonych pikselami na nim na przykład jeśli wpiszemy 200 pikseli to
zobacz że wszystkie karty rozszerzyły się tak
aby mieć szerokość 200 pikseli możemy też operować na procentach
jednostkach takich jak viewport width
czy też
dziedziczyć właściwości flex-basis
po rodzicu teraz wróćmy do sytuacji gdy ustawiłem tutaj
flex-basis na 200 pikseli i
zobacz że jest tutaj taka sytuacja że bez tego
flex-basis który domyślnie był ustawiony na auto te
karty miały już jakąś swoją ustaloną szerokość było to 100
pikseli w tych stylach bazowych które przygotowałem
na początku kursu i w momencie kiedy nadamy właściwości flex-basis wartość
inną niż auto to wtedy właściwości takie
jak width czy height przegrywają i aplikowana jest wartość ustawiona na flex-basis
czyli innymi słowy jeśli mamy ustawiony zarówno
flex-basis i width i flex-basis nie ma ustawionej
wartości auto kiedy flex-basis będzie miało priorytet
natomiast nie jest to do końca intuicyjne dlaczego akurat flex-basis w tym
wypadku ustawia nam szerokość tego kontenera więc dlaczego tak
się dzieje otóż flex-basis tak samo jak inne właściwości
flexboxa operuje na osiach to znaczy jako że
my mamy ustawione flex-direction na row czyli naszą main axis
jest w tym momencie oś pozioma to flex-basis będzie odnosiło
się do rozmiaru elementu osi x jeśli
zmienimy tutaj sobie flex-direction na column
to zobacz że te elementy w tym momencie mają wysokość
ustawioną za pomocą flex-basis i to właściwość height
selektora kart jest nadpisywana przez tą właściwość a szerokość
kontenera dalej jest brana z właściwości width
czyli ustawiając flex-basis zmieniamy rozmiar
konkretnego elementu flexboxa w odniesieniu do
obecnej main axis czyli przy flex-direction row
ustawiając flex-basis na 200 pikseli
ustawimy tak jakby szerokość karty na 200 pikseli
jej wysokość
i w tym momencie nie ważne czy wpiszemy
sobie height nawet
po flex-basis wpisując 300 pikseli tutaj
specyficzność selektorów czy kolejność właściwości wewnątrz selektorów nie
ma już takiego znaczenia ponieważ zgodnie ze specyfikacją jeśli na znaczniku
występuje zarówno flex-basis jak i odpowiadająca temu właściwość
heigth lub width flex-basis będzie miało priorytet i
korzystanie z flex-basis ma swoje zalety ponieważ mamy większą
kontrolę nad tym jak elementy będą wyglądać nieważne
w jakiej osi będziemy się znajdować flex-basis działa dla obu osi
i ustawia rozmiar elementu wzdłuż osi main axis
i dzięki temu jest nim łatwiej zarządzać
jeśli planujemy przełączać wartość właściwości flex-direction
natomiast jeśli nie mamy tego w planach ponieważ nasz layout
tego nie wymaga to równie dobrze możemy tutaj używać właściwości
takich jak width czy height