Flexbox to nowoczesny, jednowymiarowy model układu CSS, który upraszcza tworzenie responsywnych układów strony. Flexbox pozwala na łatwe zarządzanie elementami, ich rozmiarem i przestrzenią w kontenerze, niezależnie od ich ilości czy rozmiaru pierwotnego. Jest szczególnie przydatny do tworzenia responsywnych nawigacji, galerii, układów kart czy różnych formularzy.
Model flexbox składa się z dwóch głównych elementów — kontenera flex (flex container) i elementów flex (flex items). Kontener flex to rodzic, który zawiera elementy flex. Elementy flex to dzieci kontenera flex, które są pozycjonowane i dostosowywane wewnątrz kontenera.
Korzystanie z flexbox możemy rozpocząć ustawiając właściwośćdisplay kontenera na flex lub inline-flex. Wartość flex sprawia, że kontener staje się blokowym elementem, natomiast inline-flex sprawia, że kontener staje się elementem liniowo-blokowym.
.container {
display: flex; /* lub display: inline-flex */
}
Należy pamiętać, że kiedy kontener staje się flex, jego dzieci automatycznie stają się elementami flex. Elementy te są układane w rzędzie (domyślnie) lub kolumnie za pomocą zmiany kierunku flex-direction.
W przeciwieństwie do innych modeli układu, takich jak float czy positioning, flexbox pozwala na łatwe pionowe i poziome wyśrodkowanie elementów, zarówno w kontenerze, jak i względem siebie nawzajem.
Flexbox pozwala również na elastyczne dostosowywanie rozmiaru elementów, gdy jest dostępna wolna przestrzeń lub gdy brakuje miejsca. Elementy mogą być automatycznie rozciągane, kurczone lub przesuwane w zależności od ustawień kontenera flex i poszczególnych elementów flex.
Należy pamiętać, że flexbox jest jednowymiarowy, co oznacza, że można go stosować tylko w jednym kierunku (wiersz lub kolumna) na raz. W przypadku jeśli potrzebny jest bardziej zaawansowany układ dwuwymiarowy, lepszym rozwiązaniem będzie CSS Grid.
Swoją przygodę z projektowaniem stron internetowych rozpocząłem z kursem od Komputer Świat wydanym w marcu 2003 roku w formie małej książeczki. Na przestrzeni 20 lat zaprojektowałem niezliczoną ilość witryn i aplikacji internetowych. Projektowałem dla małych i dużych firm takich jak Oriflame, Top Market, Bezpieczna Rodzina czy Helping Hand.