close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
Flexbox w CSS - jak działa?

Jak działa flexbox CSS?

Flexbox to nowoczesna i powszechnie stosowana technika tworzenia układu. Pozwala łatwo ułożyć elementy w wierszu lub kolumnie. Co ważne, taki układ może elastycznie dopasowywać się do ilości dostępnego miejsca.

Poznaj flexbox: Interaktywny kurs CSS

Flexbox - możliwości

Flexbox tworzy jednowymiarowy układ. Oznacza to, że można elementy ułożyć w wierszu albo w kolumnie ale nie w obydwu jednocześnie. Za pomocą tej techniki można rozwiązać wiele typowych problemów:

  • stworzyć kolumny o jednakowej wysokości
  • stworzyć płynny układ kolumn, który dopasuje się do ilości dostępnego miejsca
  • wyśrodkować zawartość elementu w pionie
  • i wiele, wiele więcej

Flexbox na chwilę obecną jest poprawnie obsługiwany przez praktycznie wszystkie popularne przeglądarki. To technika, którą śmiało możesz stosować do tworzenia układu elementów strony.

Przykład

Od razu zabierzemy się do tworzenia układu opartego na flexbox.

Kod HTML wygląda tak:


  <section>
    <article>
    Zawartość artykułu
    </article>
    <article>
    Zawartość artykułu
    </article>
    <article>
    Zawartość artykułu
    </article>
  </section>
  
  

Mamy sekcję, która obejmuje trzy artykuły. Używany jest normalny przepływ czyli artykuły wyświetlają się jeden nad drugim (są elementami blokowymi).

Flexbox w CSS i elementy blokowe

Naszym zadaniem jest zamiana tego układu, tak aby artykuły były umieszczone obok siebie w jednym wierszu.

Musimy do kontenera dodać taką właściwość:


  section {
    display: flex;
  }
  
  

Kontenerem dla artykułów jest sekcja i to właśnie do niej dodaliśmy display: flex.

A oto efekt:

Flexbox w CSS - jak ułożyć elementy obok siebie

Teraz wszystkie artykuły umieszczone są obok siebie w jednym wierszu. Zauważ, że mają one identyczną wysokość niezależnie od tego jak dużo zawartości jest w danym artykule. Możemy powiedzieć, że te nasze artykuły stały się “elastycznymi pudełkami”.

Kolumny i wiersze

Flexbox ma dwa możliwe układy: wiersz (row) oraz kolumna (column). Domyślnym układem jest wiersz i dlatego artykuły z naszego przykładu ułożone zostały obok siebie. Aby zmienić układ wystarczy do kontenera flex dodać odpowiednią właściwość:


  flex-direction: column;
  
  

Zawartość zostanie ułożona w jednej pionowej kolumnie.


  flex-direction: row;
  
  

Zawartość zostanie ułożona w wierszu. Jest to wartość domyślna.

Jeśli więc chcemy zmienić układ naszych artykułów z wiersza na kolumnę to możemy zrobić tak:


  section {
    display: flex;
    flex-direction: column;
  }
  
  

Uzyskamy artykuły ułożone jeden nad drugim.

W praktyce można dzięki temu dowolnie układać elementy. Mamy taki prosty zestaw odnośników:


  <div class="links">
    <a href="index.html">Start</a>
    <a href="categories.html">Kategorie</a>
    <a href="new.html">Nowości</a>
  </div>
  
  

Odnośniki to elementy liniowe a więc będą umieszczone obok siebie. Jeśli chcesz je rozmieścić w pionie to wystarczy do kontenera, czyli do elementu z klasą .links, dodać odpowiednie właściwości:


  .links {
    display: flex;
    flex-direction: column;
  }
  
  

Odnośniki w przeglądarce ułożą się tak jak chcemy:

CSS - odnośniki i nawigacja strony

Flexbox - przydatne techniki

Zawijanie

Zawijanie może się przydać jeśli chcesz stworzyć “płynny” układ elementów. Czyli taki, który dostosuje się do ilości dostępnego miejsca.

Mamy artykuły z szerokością ustawioną “na sztywno”. Każdy z nich ma dokładnie 300px szerokości. Artykuły są umieszczone w kontenerze flexbox.

Szerokość kontenerów z użyciem flexbox

Zauważ, że artykuły są “ściskane” przez flexbox. Ustawienie ich szerokości na 300px nic tu nie da, bo flexbox i tak je ściśnie. W takiej sytuacji lepiej by było zawijać artykuły do kolejnych wierszy.

Dodajmy właściwość do kontenera, który te artykuły otacza:


  section {
    display: flex;
    flex-wrap: wrap;
  }
  
  

Właściwość flex-wrap ma wartość wrap. Dzięki niej sprawimy, że nasze artykuły nie będą ściskane i zamiast tego będą się ładnie zawijały do kolejnych wierszy.

Flexbox i wrap - zawijanie tekstu w CSS

Takie zawijanie jest uzależnione od dostępnego miejsca:

  • przy dużej szerokości wszystkie artykuły w jednym wierszu
  • przy średniej szerokości niektóre artykuły przeskoczą do kolejnego wiersza
  • przy małej szerokości każdy artykuł znajdzie się w osobnym wierszu

W ten sposób łatwo można stworzyć płynny układ, który dostosuje się zawsze do ilości dostępnego miejsca.

Wyrównanie elementów

Flexbox pozwala łatwo wyrównywać elementy. Popatrz na przykład:

Formatowanie elementów button z użyciem flexbox

Mamy pasek z przyciskami. Przyciski umieszczone są zgodnie z normalnym przepływem elementów. Chcemy aby były one wyśrodkowane w pionie względem paska. Dodatkowo mają być równomiernie rozmieszczone w poziomie - tak aby pomiędzy przyciskami były jednakowe odstępy.

Rozpoczniemy od dodania display: flex do paska bo to on jest kontenerem dla przycisków.


  .actions {
    display: flex;
  }
  
  
Przyciski w CSS i flexbox

Zauważ, że przyciski zostały rozciągnięte w pionie. Tak właśnie działa flexbox - tworzy takie jakby kolumny o jednakowej wysokości. Tak samo zresztą zachowywały się nasze artykuły z wcześniejszych przykładów.

Teraz trzeba wyśrodkować przyciski w pionie:


  .actions {
    display: flex;
    align-items: center;
  }
  
  

Właściwość align-items: center środkuje nasze przyciski. Co ciekawe, gdyby nasz kontener flex był kolumną a nie wierszem to przyciski zostały by wyśrodkowane w poziomie! Tak właśnie działa flexbox - nie rozróżnia pionu i poziomu. Ma tylko główną i dodatkową oś, które mogą się zamieniać miejscami jeśli zmieniamy układ z wierszy na kolumny i odwrotnie.

Centrowanie (środkowanie) elementów w CSS

Zaczyna to już wyglądać nieźle. Za chwilę jeszcze rozłożymy te przyciski w poziomie.

Dodajmy do kontenera kolejną właściwość:


  .actions {
    display: flex;
    align-items: center;
    justify-content: space-around;
  }
  
  

Właściwość justify-content: space-around pozwoli nam osiągnąć pożądany efekt. Przyciski zostaną równomiernie rozłożone. Co ważne odstępy pojawią się z każdej strony:

  • pomiędzy przyciskami
  • po lewej i po prawej stronie skrajnych przycisków

Mechanizm flex oblicza wszystko automatycznie. Bierze on pod uwagę szerokość paska oraz szerokość przycisków i tak je rozkłada aby z każdej strony pojawiły się jednakowe odstępy.

W przeglądarce mamy taki efekt:

Justowanie elementów - flexbox w CSS

Podsumowanie

Flexbox to niezwykle przydatna technika o bardzo szerokich możliwościach. To jedna z ważniejszych technik współczesnego CSS.

Jeśli dobrze poznać CSS i zdobyć umiejętności potrzebne do pracy na stanowisku Junior Web Developer, to zacznij naukę ze Ścieżką Kariery. Nauka kończy się egzaminem, który uprawnia cię do posługiwania się Certyfikatem Specjalisty.

Poznaj flexbox: Interaktywny kurs CSS