Sloupce
Základním použitím gridu je uspořádání potomků do sloupců. Jednoduše si vyberte, vyberte číslo v rozmení 1–12, o zbytek se postará grid. Ve výchozím stavu je využito 12 sloupců.
Pro vlastní specifické rozložení stránky nebo komponenty vyzkoušejte property grid-template-areas.
HTML only
<div class="grid"></div>
<div class="grid grid--9"></div>
<div class="grid grid--5"></div>
<div class="grid grid--3"></div>
<div class="grid grid--2"></div>
<div class="grid grid--1"></div>
Less only
<div class="foo foo--12-columns"></div>
<div class="foo foo--9-columns"></div>
...
.foo {
display: grid;
}
.foo--12-columns {
.gridColumns(12); // Využití připraveného mixinu
}
.foo--9-columns {
grid-template-columns: repeat(9, 1fr); // Ruční zápis
}
Pro vlastní specifické rozložení stránky nebo komponenty vyzkoušejte property grid-template-areas.
Responzivní grid
Grid 2 ➞ S 3 ➞ M 6
HTML only
<div class="grid grid--2 grid--s-3 grid--m-6"></div>
Less only
<div class="foo"></div>
.foo {
display: grid;
.gridColumns(2);
@media @size-s {
.gridColumns(3);
}
@media @query-m {
.gridColumns(6);
}
}
Třídy a selektory pro responzivní grid vychází z názvů media queries.
Grid 1 ➞ S 2 ➞ M 3 ➞ L 4
<div class="grid grid--1 grid--s-2 grid--m-3 grid--l-4"></div>
Grid 2 ➞ S 3 ➞ M 4 ➞ L 6 ➞ XL 8 ➞ XXL 10
<div class="grid grid--2 grid--s-3 grid--m-4 grid--l-6 grid--xl-8 grid--xxl-10"></div>
Auto-fit & Auto-fill
CSS Grid nabízí také jednoduché zarovnání obsahu do mřížky pomocí properties auto-fit
a auto-fill
.
Tyto vlastnosti využijete hlavně v případě, že nedokážete přesně odhadnout, do kolika sloupců grid rozdělit, ale víte, jak zhruba by měl být jeden sloupec široký.
Pomocí dvou řádků v CSS tak vytvoříte responzivní grid bez nutnosti použití media queries.
Obě vlastnosti produkují při dvou a více řádcích totožný výsledek. Pokud jsou položky pouze v jednom řádku, zobrazení se liší. Použijte tedy jednu z properties dle požadavků na obsah elementu.
<div class="foo"></div>
<div class="bar"></div>
.foo {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(64px, 1fr));
}
.bar {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
}
Rozsah položky
Jednotlivé položky gridu lze škálovat v rámci mřížky samotné. Pro sloupce a řádky jsou připraveny třídy s rozsahem od 1 do 12.
HTML only
<div class="grid grid--6">
<div class="col--2 row--2"></div>
<div class="col--4"></div>
<div class="row--2"></div>
<div class="col--3 row--2"></div>
<div class="col--2"></div>
</div>
Less only
<div class="foo"
<div class="foo__item"></div>
<div class="foo__item"></div>
<div class="foo__item"></div>
<div class="foo__item"></div>
<div class="foo__item"></div>
</div>
.foo {
display: grid;
.gridColumns(6);
}
.foo__item {
&:nth-child(1) {
.colSpan(2);
.rowSpan(2);
}
&:nth-child(2) {
.colSpan(4);
}
&:nth-child(3) {
.rowSpan(2);
}
&:nth-child(4) {
.colSpan(3);
.rowSpan(2);
}
&:nth-child(5) {
.colSpan(2);
}
}
Responzivní rozsah
Tip Třídy pro responzivní rozsah vychází z názvů media queries.
<div class="grid grid--4">
<div class="col--4 col--l-1 row--l-1">1</div>
<div class="col--4 col--l-3 row--l-3">2</div>
<div class="col--4 col--l-1 row--l-2">3</div>
</div>
Na celou šířku
<div class="grid grid--3 grid--m-6 grid--xl-8 grid--gap-1 grid--flow-dense">
...
<div class="foo">5</div>
<div class="foo col--full">6 👻</div>
<div class="foo">7</div>
...
</div>
Pro responzivní plnou šířku využijte modifikátory --s-full
až --xxl-full
.
U implicitního gridu nelze dopředu vypočítat případný rozsah na celou výšku, proto row--full
roztáhnutí řádku nemusí fungovat.
Reset
Jakýkoli rozsah col
a row
lze obnovit pomocí modifikátoru --reset
a také responzivních modifikátorů --s-reset
až --xxl-reset
.
Mezera
CSS Grid umí vytvářet mezery pouze mezi svými prvky. V praxi to znamená, že není potřeba paddingů a záporných marginů, jako tomu typicky u CSS layout systemů bývá. Vyberte číslo v rozmezí 1–8 pro velikost mezery. Ve výchozím stavu se mezera nevkládá.
HTML only
<div class="grid grid--6 grid--gap-1"></div>
Less only
<div class="foo"></div>
.foo {
display: grid;
.gridColumns(6);
.gridGap(1);
}
<div class="grid grid--6 grid--gap-3"></div>
<div class="grid grid--6 grid--gap-6"></div>
Responzivní mezera
Grid Gap 1 ➞ S 2 ➞ M 3 ➞ L 4Třídy pro responzivní mezeru vychází z názvů media queries.
<div class="grid grid--6 grid--gap-1 grid--gap-s-2 grid--gap-m-3 grid--gap-l-4"></div>
Pomocné třídy gridu
Některé z často používaných properties nebo kombinace properties jsou přístupné jednoduše díky pomocným třídám.
Dense flow
Může se stát, že některá položka se již nevejde do příslušného řádku a grid ji automaticky přesune na další řádek.
Nastavte třídu grid--flow-dense
pro automatické přeskládání položek tak, aby "díry" v gridu byly co nejmenší.
Spacing
<div class="foo grid--gap-1 grid--spaced-[around|between|evenly]"></div>
.foo {
display: grid;
grid-template-columns: repeat(4, 64px);
grid-template-rows: repeat(4, 64px);
padding: var(--base-2);
border: 1px solid;
border-radius: calc(var(--radius) * 1.5);
.themify(border-color, @divider);
}