CSS Flexbox: Controlul Layout-ului Modern
Flexbox este o metodă modernă și eficientă de a crea layout-uri responsive în CSS. Spre deosebire de tehnicile clasice, Flexbox oferă control pe axa principală și secundară, aliniere precisă și distribuție automată a spațiului. În acest tutorial vom explora pas cu pas cum funcționează Flexbox și cum îl putem folosi în proiecte reale.
1. display
Activează modul Flexbox pe un container.
display: flex- activează Flexbox pe elementul curentdisplay: inline-flex- activează Flexbox, dar containerul se comportă ca un element inline
2. flex-direction
Controlează direcția în care sunt așezate elementele în container.
row- orizontal, de la stânga la dreapta (implicit)row-reverse- orizontal, de la dreapta la stângacolumn- vertical, de sus în joscolumn-reverse- vertical, de jos în sus
3. justify-content
Controlează distribuția elementelor pe axa principală (orizontală dacă
flex-direction: row, verticală dacă flex-direction: column).
flex-start- aliniere la începutul axeiflex-end- aliniere la finalul axeicenter- elementele sunt centratespace-between- spațiu egal între elemente, fără marginispace-around- spațiu egal în jurul fiecărui elementspace-evenly- spațiu egal între elemente și marginile containerului
4. align-items
Controlează alinierea elementelor pe axa secundară (verticală dacă
flex-direction: row, orizontală dacă flex-direction: column).
stretch- elementele se întind pe toată axa secundară (implicit)flex-start- aliniere la începutul axei secundareflex-end- aliniere la finalul axei secundarecenter- elementele sunt centrate pe axa secundarăbaseline- aliniere după linia de bază a textului
5. flex-wrap
Controlează dacă elementele din container se înfășoară pe mai multe linii atunci când nu mai au loc pe axa principală.
nowrap- toate elementele rămân pe o singură linie (implicit)wrap- elementele se înfășoară pe linii noi când nu mai au locwrap-reverse- cawrap, dar liniile sunt inversate
6. align-content
Controlează alinierea liniilor multiple pe axa secundară, dar funcționează doar când există
mai multe rânduri (deci flex-wrap trebuie să fie activ).
flex-start- liniile sunt aliniate la începutul axei secundareflex-end- liniile sunt aliniate la finalul axei secundarecenter- liniile sunt centratespace-between- spațiu egal între liniispace-around- spațiu egal în jurul fiecărei liniistretch- liniile se întind pe toată axa secundară (implicit)
7. order
Controlează ordinea de afișare a elementelor într-un container Flexbox, fără a modifica ordinea lor în HTML.
order: 0- valoarea implicităorder: <număr>- cu cât numărul e mai mic, cu atât elementul apare mai devreme
8. flex-grow
Controlează cât de mult poate crește un element pentru a ocupa spațiul disponibil în container.
flex-grow: 0- elementul nu crește (implicit)flex-grow: 1- elementul crește proporțional cu spațiul disponibilflex-grow: >1- elementul crește mai mult decât celelalte
9. flex-shrink
Controlează cât de mult se micșorează un element când spațiul este limitat.
flex-shrink: 1- elementul se micșorează proporțional (implicit)flex-shrink: 0- elementul nu se micșoreazăflex-shrink: >1- elementul se micșorează mai agresiv
10. flex-basis
Definește dimensiunea de bază a unui element înainte ca spațiul disponibil să fie distribuit. Este similar cu
width, dar funcționează în contextul Flexbox.
auto- folosește dimensiunea definită de conținut sauwidth<lungime>- ex:flex-basis: 200px, setează o dimensiune fixă0- ignoră dimensiunea naturală și distribuie spațiul în funcție deflex-grow
11. flex (shorthand)
Este o prescurtare pentru flex-grow, flex-shrink și flex-basis.
flex: 1- echivalent cuflex-grow: 1; flex-shrink: 1; flex-basis: 0%flex: 0 1 auto- valoarea implicităflex: <grow> <shrink> <basis>- ex:flex: 2 0 150px
12. align-self
Permite unui element să-și controleze alinierea pe axa secundară, suprascriind align-items din
container.
auto- moștenește valoarea de laalign-itemsflex-start- aliniere la începutul axei secundareflex-end- aliniere la finalul axei secundarecenter- centrat pe axa secundarăbaseline- aliniere după linia de bază a textuluistretch- se întinde pe toată axa secundară (implicit)
Flexbox Cheat Sheet
| Proprietate | Valori | Descriere |
|---|---|---|
display |
flex, inline-flex | Activează modul Flexbox |
flex-direction |
row, row-reverse, column, column-reverse | Direcția elementelor în container |
justify-content |
flex-start, flex-end, center, space-between, space-around, space-evenly | Aliniere pe axa principală |
align-items |
stretch, flex-start, flex-end, center, baseline | Aliniere pe axa secundară |
flex-wrap |
nowrap, wrap, wrap-reverse | Înfășurarea elementelor pe mai multe linii |
align-content |
flex-start, flex-end, center, space-between, space-around, stretch | Alinierea liniilor multiple |
order |
0, 1, 2, ... | Ordinea de afișare |
flex-grow |
0, 1, 2, ... | Creșterea în funcție de spațiul disponibil |
flex-shrink |
0, 1, 2, ... | Micșorarea când spațiul e limitat |
flex-basis |
auto, 0, px, % | Dimensiunea de bază |
flex |
shorthand: grow shrink basis | Prescurtare pentru cele trei de mai sus |
align-self |
auto, flex-start, flex-end, center, baseline, stretch | Aliniere individuală pe axa secundară |
Exemplu: Layout de carduri responsive
Un layout de carduri care se adaptează automat la dimensiunea ecranului, folosind flex-wrap și
flex-basis.
Exemplu: Navbar cu Flexbox
Un navbar simplu, aliniat pe orizontală, cu logo în stânga și linkuri în dreapta, folosind
display: flex și justify-content: space-between.
Layout complet pentru mini site
Un exemplu solid de structură web — cu header, navigație,
sidebar, conținut principal și footer — construit cu
HTML și CSS curat. Ideal pentru proiecte simple, dashboard-uri sau site-uri personale.
Totul e modular și ușor de extins cu PHP, JS sau framework-uri moderne.
Flexbox ți-a dat controlul pe orizontală și verticală, dar dacă vrei să orchestrezi layout-uri complexe ca un arhitect web, e timpul să treci la CSS Grid — unde fiecare rând și coloană e sub comanda ta. Hai să începem
🧠 Quiz - CSS Flexbox: Controlul Layout-ului Modern
