Flexbox și Grid sunt două tehnici puternice de dispunere a elementelor în CSS, folosite pentru a crea layout-uri complexe și responsive într-un mod ușor și eficient.
În această lecție, vei învăța:
✅ Flexbox – Cum să aliniezi și să distribui elementele pe o axă flexibilă.
✅ Grid – Cum să creezi layout-uri pe 2 dimensiuni (rânduri și coloane).
✅ Cum să combini Flexbox și Grid pentru design-uri moderne și responsive.
1. Flexbox: O Introducere
Flexbox este ideal pentru aranjarea elementelor pe o singură axă (orizontală sau verticală). Este utilizat frecvent pentru:
- Meniuri de navigare
- Galerii de imagini
- Alinierea elementelor (centrare verticală și orizontală)
1.1. Cum Funcționează Flexbox
În Flexbox, avem două componente principale:
🔹 Container Flex – Elementul părinte care conține elementele flexibile.
🔹 Elemente Flex – Elementele din interiorul containerului care sunt aranjate flexibil.
Exemplu HTML:
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
CSS de Bază:
.container {
display: flex;
border: 2px solid #333;
}
.item {
background-color: #007bff;
color: white;
padding: 20px;
margin: 5px;
}
1.2. Direcția Elementelor Flex
🔸 flex-direction controlează direcția elementelor flexibile:
row(implicit): pe orizontală (de la stânga la dreapta)row-reverse: pe orizontală (de la dreapta la stânga)column: pe verticală (de sus în jos)column-reverse: pe verticală (de jos în sus)
Exemplu:
.container {
display: flex;
flex-direction: row;
}
1.3. Alinierea Elementelor cu Flexbox
1.3.1. Aliniere pe axa principală (justify-content)
🔸 justify-content controlează distribuția spațiului pe axa principală:
flex-start(implicit) – la începutul containeruluiflex-end– la sfârșitul containeruluicenter– centratespace-between– spațiu egal între elementespace-around– spațiu egal în jurul fiecărui element
Exemplu:
.container {
display: flex;
justify-content: center;
}
1.3.2. Aliniere pe axa transversală (align-items)
🔸 align-items controlează alinierea pe axa transversală:
stretch(implicit) – elementele se întind pentru a umple spațiulflex-start– aliniate susflex-end– aliniate joscenter– aliniate pe mijloc
Exemplu:
.container {
display: flex;
align-items: center;
}
1.4. Flex Wrap și Ordinea Elementelor
1.4.1. Flex Wrap
🔸 flex-wrap permite elementelor să treacă pe un rând nou când nu mai încap pe linia curentă:
nowrap(implicit) – toate elementele pe un singur rândwrap– elementele se împachetează pe mai multe rânduri
Exemplu:
.container {
display: flex;
flex-wrap: wrap;
}
1.4.2. Ordinea Elementelor
🔸 order schimbă ordinea afișării elementelor:
.item:nth-child(2) {
order: -1; /* Acest element va apărea primul */
}
2. CSS Grid: O Introducere
CSS Grid este o tehnică de layout bidimensională (rânduri și coloane). Este ideală pentru:
- Layout-uri complexe (pagini întregi)
- Galerii de imagini
- Dashboard-uri
2.1. Cum Funcționează Grid
🔹 Container Grid – Elementul părinte care definește grila.
🔹 Elemente Grid – Elementele copil care se aliniază pe grilă.
Exemplu HTML:
<div class="grid-container">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
</div>
CSS de Bază:
.grid-container {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
.grid-item {
background-color: #28a745;
color: white;
padding: 20px;
}
2.2. Definirea Coloanelor și Rândurilor
🔸 grid-template-columns și grid-template-rows definesc structura grilei:
repeat()– repetă coloane/rânduri de un anumit număr de ori1fr– împarte spațiul disponibil în mod egal
Exemplu:
.grid-container {
grid-template-columns: repeat(3, 1fr);
grid-template-rows: 200px 200px;
}
2.3. Poziționarea Elementelor în Grid
🔸 grid-column și grid-row controlează poziționarea:
.grid-item:first-child {
grid-column: 1 / 3;
grid-row: 1 / 2;
}
3. Combinarea Flexbox și Grid
Flexbox este ideal pentru aliniere și dispunere pe o singură axă, iar Grid pentru layout-uri complexe. Le poți combina pentru a crea pagini web moderne și responsive.
4. Activitate Practică
🎯 Exercițiu 1: Creează un layout de carduri responsive folosind Flexbox.
🎯 Exercițiu 2: Construiește o pagină de tip galerie folosind Grid.
🎯 Exercițiu 3: Combină Flexbox și Grid pentru un layout de pagină complet.
5. Quiz pentru Săptămâna 4
1️⃣ Care proprietate Flexbox distribuie spațiul pe axa principală?
- a)
justify-content - b)
align-items - c)
flex-wrap
2️⃣ Care proprietate Grid definește numărul de coloane?
- a)
grid-template-columns - b)
grid-template-rows - c)
grid-gap