Kurs HTML i CSS · Moduł 4: Flexbox

Flexbox

3 min czytania

Flexbox to zestaw CSS-owych deklaracji, które umożliwiają nam łatwiejsze ustawianie pozycji elementów na stronie internetowej i tworzenie elastycznego układu. Pomysł na model Flexbox pojawił się już jakiś czas przed 2008 rokiem, a pierwsza robocza wersja została opublikowana 23 lipca 2009 roku. W kolejnych latach model Flexbox był rozwijany i dostosowywany do potrzeb projektantów i programistów, aż w październiku 2017 roku została opublikowana ostatnia robocza wersja modelu Flexbox.

Flexbox wprowadza nowe właściwości CSS, które pozwalają na kontrolowanie układu elementów w jednym wymiarze - wzdłuż osi głównej (main axis) i w poprzek osi krzyżowej (cross axis). Główne właściwości Flexboxa to:

  • display: flex - Określa, że elementy potomne mają korzystać z modelu Flexboxa.
  • flex-direction - Określa kierunek, w którym elementy będą ułożone, czyli czy mają być ułożone w linii poziomej (row), linii pionowej (column) lub odwrócone w linii poziomej (row-reverse) lub linii pionowej (column-reverse).
  • justify-content - Określa sposób rozmieszczania elementów wzdłuż osi głównej, czyli w poziomie. Możemy ustawić, aby elementy były równo rozłożone, wycentrowane, wyrównane do lewej lub prawej strony itp.
  • align-items - Określa sposób rozmieszczania elementów wzdłuż osi krzyżowej, czyli w pionie. Możemy ustawić, aby elementy były wycentrowane, wyrównane do góry, do dołu itp.
  • flex-grow, flex-shrink, flex-basis - Określają elastyczność i sposób dopasowania elementów, gdy nie ma wystarczającej przestrzeni na ich wyświetlenie w linii.
  • align-self - Określa rozmieszczenie pojedynczego elementu wzdłuż osi krzyżowej, niezależnie od reszty elementów.

Model Flexbox jest bardzo użytecznym narzędziem w projektowaniu responsywnych układów strony, a także w zarządzaniu układem elementów w ramach konkretnych kontenerów. Dzięki elastyczności i różnorodnym możliwościom, które oferuje, Flexbox ułatwia tworzenie wyjątkowych i estetycznych układów strony internetowej. Stylowanie od wielu lat odbywało się przez właściwości float i position. Starsi programiści pamiętają strony oparte na tabelach. Miały jednak one swoje problemy i czasami stylowanie było frustrujące. Z pomocą przychodzi nam zapis display: flex;:

1section {
2  display: flex;
3}

Jak widzisz powyżej deklaracja display: flex; zadziała na selektor elementu sekcji. W naszym przypadku sekcja będzie rodzicem trzech elementów z klasą box:

1<section>
2  <div class="box">Element 1</div>
3  <div class="box">Element 2</div>
4  <div class="box">Element 3</div>
5</section>

Od samego początku możemy zobaczyć, że elementy będą ustawione obok siebie.

Kontener flex to fundament piramidy, a elementy flex to kamienie, z których piramida jest zbudowana. Tak jak kamienie można ułożyć w różny sposób, tak elementy flex można uporządkować za pomocą różnych właściwości, takich jak justify-content czy align-items.

Więcej dowiesz się w kolejnych zwojach wiedzy, a na końcu modułu czeka na Ciebie specjalna minigra (https://flexboxfroggy.com/#pl).

Kod do tej lekcji: index.html
1<!DOCTYPE html>
2<html lang="pl">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>Flexbox - Kontener flex</title>
7    <link rel="stylesheet" href="style.css">
8</head>
9<body>
10    <div class="container">
11        <h1>Flexbox - Kontener Flex</h1>
12
13        <section class="demo-section">
14            <h2>Bez Flexbox (domyślnie)</h2>
15            <div class="no-flex">
16                <div class="item">Kamień 1</div>
17                <div class="item">Kamień 2</div>
18                <div class="item">Kamień 3</div>
19            </div>
20            <p>Elementy blokowe układają się jeden pod drugim.</p>
21        </section>
22
23        <section class="demo-section">
24            <h2>Z Flexbox (display: flex)</h2>
25            <!-- Dodaj display: flex do klasy .flex-container w style.css -->
26            <div class="flex-container">
27                <div class="item">Kamień 1</div>
28                <div class="item">Kamień 2</div>
29                <div class="item">Kamień 3</div>
30            </div>
31            <p>Po dodaniu display: flex elementy ustawiają się obok siebie.</p>
32        </section>
33
34        <section class="demo-section">
35            <h2>Praktyka: Egipska galeria</h2>
36            <div class="gallery">
37                <div class="item gallery-item">Hieroglif A</div>
38                <div class="item gallery-item">Hieroglif B</div>
39                <div class="item gallery-item">Hieroglif C</div>
40                <div class="item gallery-item">Hieroglif D</div>
41            </div>
42            <p>Spróbuj dodać display: flex do klasy .gallery w CSS!</p>
43        </section>
44    </div>
45</body>
46</html>

Widzisz błąd w tej lekcji?

Sprawdź się

Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.

  1. 1. Jaką deklarację CSS należy dodać do kontenera, aby aktywować model Flexbox?

  2. 2. Na jakie elementy wpływa deklaracja display: flex?

To 2 z 3 pytań do tej lekcji. Pozostałe rozwiążesz w grze.

Zadania praktyczne w grze

  • Edytor kodu

    Dodaj deklarację display: flex do kontenera .container, aby elementy wewnątrz ustawiły się obok siebie w poziomie.

  • Klikanie w kolejności

    Ułóż deklarację CSS aktywującą Flexbox:

  • Edytor kodu

    Stwórz kontener z trzema elementami div i użyj display: flex, aby ustawić je obok siebie w jednym wierszu.

Przydatne artykuły