CSS- podstawy flexboxa i jego wykorzystanie do budowy układu głównych elementów strony

CSS- podstawy flexboxa i jego wykorzystanie do budowy układu głównych elementów strony

Flexbox (Flexible Box Layout) to moduł CSS służący do tworzenia elastycznych układów elementów w jednym wymiarze:

  • poziomym (row) lub
  • pionowym (column).

Podstawowe pojęcia

  • flex container – element nadrzędny (display: flex),
  • flex items – elementy potomne kontenera,
  • oś główna (main axis) i oś poprzeczna (cross axis).

Aktywacja Flexboxa

.container {
display: flex;
}

Po tej deklaracji wszystkie dzieci kontenera stają się elementami flex.

Właściwości kontenera flex

flex-direction – kierunek osi głównej

  • row (domyślnie) – poziomo,
  • row-reverse,
  • column – pionowo,
  • column-reverse.
.container {
display: flex;
flex-direction: row;
}

justify-content – wyrównanie wzdłuż osi głównej

  • flex-start,
  • center,
  • flex-end,
  • space-between,
  • space-around,
  • space-evenly.

align-items – wyrównanie wzdłuż osi poprzecznej

  • stretch (domyślnie),
  • center,
  • flex-start,
  • flex-end.

flex-wrap – zawijanie elementów

  • nowrap (domyślnie),
  • wrap.
.container {
display: flex;
flex-wrap: wrap;
}

Właściwości elementów flex

flex-grow – rozciąganie elementów

Określa, jak bardzo element może się rozciągnąć względem innych.

.item {
flex-grow: 1;
}

flex-shrink – zmniejszanie elementów

Decyduje, jak element reaguje na brak miejsca.

flex-basis – rozmiar początkowy

Określa bazowy rozmiar elementu.

Skrócona właściwość flex

.item {
flex: 1 1 200px;
}

Budowa prostego układu strony z Flexboxem

Struktura HTML

<div class=„page”>
<header>Header</header>
<div class=„content”>
<main>Main</main>
<aside>Sidebar</aside>
</div>
<footer>Footer</footer>
</div>
CSS – układ strony
.page {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.content {
display: flex;
flex: 1;
}
main {
flex: 3;
}
aside {
flex: 1;
}

Efekt:

  • nagłówek u góry,
  • stopka na dole,
  • treść główna i pasek boczny obok siebie.

Flexbox a responsywność

Flexbox umożliwia łatwe dostosowanie układu do różnych ekranów:

@media (max-width: 768px) {
.content {
flex-direction: column;
}
}
Na małych ekranach sidebar ustawia się pod treścią.

Ćwiczenie 1

  1. Utwórz kontener flex z trzema elementami i wyrównaj je:
    • na środku,
    • z równymi odstępami.
  2. Zbuduj layout: header – main – footer.
  3. Dodaj sidebar i spraw, aby na telefonie był pod treścią.

Ćwiczenie 2 i 3

  1. Zbuduj prostą stronę z nagłówkiem, menu, treścią i stopką przy użyciu Flexboxa.
  2. Przygotuj krótką notatkę: Dlaczego Flexbox jest lepszy niż float?

 

Przydatny link:

https://www.w3schools.com/css/css3_flexbox.asp