CSS Grid ir divdimensiju izkārtojuma sistēma, kas ļauj kontrolēt gan rindas, gan kolonnas vienlaicīgi. Tas ir ideāls sarežģītākiem lapu izkārtojumiem.
Grid pamati
Lai aktivizētu grid, vecākelementam pievieno display: grid un definē kolonu struktūru:
.konteiners {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* 3 vienādas kolonnas */
gap: 20px;
}
fr (fraction) ir īpaša mērvienība, kas sadala pieejamo vietu proporcionāli.
Kolonnu definēšana
/* 3 vienādas kolonnas */
grid-template-columns: 1fr 1fr 1fr;
/* Tas pats, saīsināti */
grid-template-columns: repeat(3, 1fr);
/* Fiksēta sānjosla + elastīgais saturs */
grid-template-columns: 250px 1fr;
/* Dažādi izmēri */
grid-template-columns: 200px 1fr 300px;
Rindu definēšana
grid-template-rows: 80px 1fr 60px; /* galvene, saturs, kājene */
Automātisks kolonnu skaits (responsīvs)
Ar auto-fit un minmax() var izveidot responsīvu režģi bez media query:
.konteiners {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 20px;
}
Šis piemērs izveido tik daudz kolonnu, cik ietilpst, ar minimālo platumu 280px.
Elementa izvietošana
Grid elementi var aizņemt vairākas kolonnas vai rindas:
.plats-elements {
grid-column: span 2; /* aizņem 2 kolonnas */
}
.garš-elements {
grid-row: span 3; /* aizņem 3 rindas */
}
/* Precīza vieta */
.elements {
grid-column: 1 / 3; /* no 1. līdz 3. kolonnas līnijai */
grid-row: 2 / 4; /* no 2. līdz 4. rindas līnijai */
}
Nosauktie apgabali (grid-template-areas)
Vizuāli intuitīvs veids, kā definēt lapas izkārtojumu:
.lapa {
display: grid;
grid-template-columns: 250px 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"galvene galvene"
"sanjosla saturs"
"kajene kajene";
min-height: 100vh;
}
.galvene { grid-area: galvene; }
.sanjosla { grid-area: sanjosla; }
.saturs { grid-area: saturs; }
.kajene { grid-area: kajene; }
Līdzinājums
/* Satura līdzinājums šūnā */
justify-items: center; /* horizontāli */
align-items: center; /* vertikāli */
place-items: center; /* abi vienlaicīgi */
/* Visa režģa līdzinājums konteinerā */
justify-content: center;
align-content: center;
Flexbox vai Grid?
| Flexbox | Grid |
|---|---|
| Viendimensiju (rinda VAI kolonna) | Divdimensiju (rindas UN kolonnas) |
| Elements nosaka savu izmēru | Konteiners nosaka izmērus |
| Navigācija, pogu rinda, vienkārši izkārtojumi | Lapas struktūra, kartīšu režģi, sarežģīti izkārtojumi |
Abus var kombinēt — grid lapas kopējam izkārtojumam, flexbox atsevišķu komponentu iekšienei.










