Utilizziamo i cookie per migliorare la tua esperienza sul sito
CodeWorlds

Grid + Flexbox - Kiedy Uzyc Czego

@name, w arsenale egipskiego architekta znajdowaly sie rozne narzedzia - dluto do precyzyjnej rzezby i dzwignia do przenoszenia wielkich blokow. Podobnie w CSS masz dwa potezne systemy ukladu: CSS Grid i Flexbox. Kazdy z nich ma swoje mocne strony i idealne zastosowania. Nauczmy sie, kiedy siegnac po ktore narzedzie!

CSS Grid - Dwuwymiarowy Uklad

CSS Grid to system dwuwymiarowy - kontrolujesz jednoczesnie kolumny I wiersze. Uzyj go, gdy potrzebujesz pelnej kontroli nad ukladem w obu osiach:

1/* Grid: idealny do calych layoutow stron */
2.page-layout {
3  display: grid;
4  grid-template-areas:
5    "header  header  header"
6    "nav     main    aside"
7    "footer  footer  footer";
8  grid-template-columns: 200px 1fr 250px;
9  grid-template-rows: auto 1fr auto;
10  min-height: 100vh;
11}

Kiedy wybrac Grid:

  • Layout calej strony - header, sidebar, main, footer
  • Galerie i dashboardy - siatki kart o roznych rozmiarach
  • Elementy o stalych pozycjach - precyzyjne rozmieszczenie w siatce
  • Gdy potrzebujesz kontroli w obu osiach jednoczesnie
  • Nakladajace sie elementy - grid pozwala na overlap

Flexbox - Jednowymiarowy Uklad

Flexbox to system jednowymiarowy - kontrolujesz uklad w jednym kierunku na raz (wiersz LUB kolumna). Uzyj go do ukladania elementow w linii:

1/* Flexbox: idealny do nawigacji */
2.navbar {
3  display: flex;
4  justify-content: space-between;
5  align-items: center;
6  padding: 1rem 2rem;
7}
8
9/* Flexbox: idealny do centrowania */
10.hero-section {
11  display: flex;
12  flex-direction: column;
13  justify-content: center;
14  align-items: center;
15  min-height: 400px;
16}

Kiedy wybrac Flexbox:

  • Nawigacje i paski narzedzi - elementy w jednej linii
  • Centrowanie elementow - szybkie i proste z flex
  • Dynamiczna zawartosc - elementy dostosowuja sie do contentu
  • Male komponenty - przyciski, karty, formularze
  • Gdy nie znasz z gory liczby elementow

Praktyczne Porownanie

Zobaczmy ten sam problem rozwiazany na oba sposoby:

Przyklad 1: Trzy karty obok siebie

1/* Flexbox - karty dostosowuja sie do contentu */
2.cards-flex {
3  display: flex;
4  gap: 20px;
5  flex-wrap: wrap;
6}
7
8.card-flex {
9  flex: 1 1 300px;  /* Rosnie, kurczy sie, min 300px */
10}
11
12/* Grid - karty maja rowne rozmiary */
13.cards-grid {
14  display: grid;
15  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
16  gap: 20px;
17}

Roznica? W Flexbox karty moga miec rozne rozmiary jesli content jest rozny. W Grid kazda karta ma dokladnie taki sam rozmiar. Jesli chcesz rownomierna siatke - wybierz Grid. Jesli chcesz elastycznosc - Flexbox.

Przyklad 2: Nawigacja

1/* Flexbox - naturalny wybor dla nav */
2.nav {
3  display: flex;
4  gap: 1rem;
5  align-items: center;
6}
7
8.nav-logo { margin-right: auto; }  /* Logo po lewej, reszta po prawej */

Dla nawigacji Flexbox jest zdecydowanie lepszym wyborem - elementy sa w jednej linii i latwo kontrolujesz ich rozlozenie.

Laczenie Grid + Flexbox

Najlepsze rezultaty uzyskasz laczac oba systemy! Grid do glownego layoutu, Flexbox do komponentow wewnetrznych:

1/* Grid: glowna struktura strony */
2.page {
3  display: grid;
4  grid-template-areas:
5    "header"
6    "main"
7    "footer";
8  grid-template-rows: auto 1fr auto;
9  min-height: 100vh;
10}
11
12/* Flexbox: nawigacja w headerze */
13.header {
14  grid-area: header;
15  display: flex;
16  justify-content: space-between;
17  align-items: center;
18  padding: 1rem 2rem;
19}
20
21/* Grid: siatka kart w main */
22.main {
23  grid-area: main;
24  display: grid;
25  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
26  gap: 1.5rem;
27  padding: 2rem;
28}
29
30/* Flexbox: zawartosc pojedynczej karty */
31.card {
32  display: flex;
33  flex-direction: column;
34}
35
36.card-body {
37  flex: 1;  /* Wypelnia dostepna przestrzen */
38}
39
40.card-footer {
41  display: flex;
42  justify-content: space-between;
43  align-items: center;
44}
45
46/* Flexbox: stopka */
47.footer {
48  grid-area: footer;
49  display: flex;
50  justify-content: center;
51  gap: 2rem;
52  padding: 1rem;
53}

Szybka Sciezka Decyzyjna

Zastanow sie nad swoim zadaniem:

  1. Ukladasz cala strone? -> Grid (grid-template-areas)
  2. Tworzysz siatke kart/galerie? -> Grid (repeat + auto-fit)
  3. Ukladasz elementy w jednej linii? -> Flexbox
  4. Centrujesz element? -> Flexbox (lub Grid z place-items)
  5. Potrzebujesz kontroli w 2 osiach? -> Grid
  6. Elementy maja rozne rozmiary i dynamiczny content? -> Flexbox
  7. Elementy powinny miec rowne rozmiary w siatce? -> Grid

To jak wybor narzedzi w warsztacie architekta piramidy - dluto do detali (Flexbox), dzwignia do wielkich blokow (Grid). Razem tworza monumentalne budowle!

Vai a CodeWorlds