CSS Grid
Layout pe două dimensiuni: fr, repeat, minmax, auto-fit și zone.
Actualizat
Ce este CSS Grid
Grid e sistemul de layout pe două dimensiuni: definești pe părinte rânduri și coloane, iar copiii se așază în celule. E cel mai puternic instrument de layout din CSS.
.gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}Unitatea fr
fr = o fracțiune din spațiul rămas. 1fr 2fr → a doua coloană e de două ori mai lată decât prima.
| Definiție | Rezultat |
|---|---|
200px 1fr |
sidebar fix + conținut care umple restul |
repeat(3, 1fr) |
3 coloane egale |
1fr auto |
conținut + o coloană cât îi trebuie |
minmax(200px, 1fr) |
minim 200px, maxim o fracțiune |
Grid responsive fără media queries
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
gap: 1rem;
}Încape câte coloane de minim 16rem pot intra; restul se distribuie egal. Pe mobil — o coloană, pe desktop — 3 sau 4, automat.
auto-fit vs auto-fill: cu puține elemente, auto-fit le întinde să umple rândul; auto-fill păstrează coloane goale.
Plasarea copiilor
.featured { grid-column: span 2; } /* ocupă 2 coloane */
.full { grid-column: 1 / -1; } /* de la prima la ultima linie */
.sidebar { grid-row: 1 / 3; } /* două rânduri */Liniile grid-ului sunt numerotate de la 1; -1 e ultima.
Zone cu nume
Pentru layout-uri de pagină, zonele sunt cele mai lizibile:
.layout {
display: grid;
grid-template-columns: 240px 1fr;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
.layout header { grid-area: header; }
.layout aside { grid-area: sidebar; }Aliniere
| Proprietate | Aliniază |
|---|---|
justify-items / align-items |
conținutul în fiecare celulă |
justify-content / align-content |
tot grid-ul în container |
place-items: center |
prescurtare — centrare în celule |
Tipuri de layout cu grid — și când
| Layout | Definiție |
|---|---|
| coloane egale | repeat(3, 1fr) |
| sidebar + conținut | 280px 1fr (ca pagina asta) |
| carduri responsive | repeat(auto-fit, minmax(16rem, 1fr)) |
| pagină cu zone | grid-template-areas |
| holy grail (header, 3 coloane, footer) | zone + minmax |
Pe scurt
- Grid = rânduri + coloane, definite pe părinte.
frîmparte spațiul rămas;minmax+auto-fit= responsive fără media queries.- Flex pentru o axă, grid pentru două.