V textu se zaměříme na vlastnosti grid-column
a grid-row
, které slouží k umísťování položek v definované mřížce.
Vlastnosti grid-column
a grid-row
jsou součástí specifikace CSS gridu.
Vlastnosti grid-column
/-row
jsou pouhými zkratkami pro snadnější zápis jiných:
grid-column-start
grid-column-end
grid-row-start
grid-row-end
Používání zkratek je praktičtější, jak sami uvidíte. Takto se uvádějí obecně:
grid-row: <grid-row-start> / <grid-row-end>;
grid-column: <grid-column-start> / <grid-column-end>;
Možné hodnoty
Možnost | Ukázka hodnoty |
---|---|
Čísla linek | 1 / 2 |
Jména linek | first-line / second-line |
Rozsah | 1 / span 2 |
Jedno číslo | 3 |
Záporná čísla | -1 / -3 |
Automatické umístění | auto |
Čísla linek
Tady je to jednoduché. Potřebujete dvě hodnoty – pro začátek a konec pozice v mřížce.
Řekněme, že máme tuto mřížku o 3 × 3 buňkách:
.container {
display: grid;
gap: 10px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 2rem 2rem 2rem;
}
Pokud bychom položku chtěli umístit do druhého sloupce a přes druhý a třetí řádek, zapíšeme to následovně:
.item {
grid-column: 2 / 3;
grid-row: 2 / 4;
}
Je to totéž, jako bychom napsali:
.item {
grid-column-start: 2;
grid-column-end: 3;
grid-row-start: 2;
grid-row-end: 4;
}
Všimněte si, že řádky končíme na čísle 4, i když je máme jen tři. Je to dobrá připomínka toho, že se zde neodkazujeme na čísla řádků či sloupců, ale na čísla linek, které grid definují.

Vlastnosti grid-column a grid-row ve Firefoxu.
Jména linek
Podobná situace je u pojmenovaných linek. Máme stejný příklad jako výše, jen s pojmenovanými linkami:
.container {
display: grid;
gap: 10px;
grid-template-columns:
[first-col] 1fr [second-col] 1fr [third-col] 1fr [end];
grid-template-rows:
[first-row] 2rem [second-row] 2rem [third-row] 2rem [end];
}
Umísťujeme pak elegantně a o fous čitelněji:
.item {
grid-column: second-col / third-col;
grid-row: second-row / end;
}
Výsledek však pochopitelně bude stejný.
Rozsah
Klíčové slovo span
slouží k určení rozsahu, jaký v mřížce buňka zabírá.
Podívejme se teď na tentýž příklad jako v první ukázce, jen si jeho pozici definujme pomocí rozsahu:
.item {
grid-column: 2 / span 1;
grid-row: 2 / span 2;
}
Vysvětlíme:
- Zápis
span 1
ugrid-column
znamená „zabírá jeden sloupec“. Tady je to zbytečné, fungovalo by to i bez tého hodnoty. - Zápis
span 2
ugrid-row
už je zajímavější. Říkáme tím, že má zabrat dva řádky buněk mřížky. Může to tedy být čitelnější než zápisgrid-row:2/4
.
Jedno číslo
Občas je možné vidět zápis grid-row
a grid-column
jen s jedním číslem:
.item {
grid-column: 2;
}
Funguje to tak, jak asi očekáváte. Prohlížeče v tomto případě automaticky umísťují prvky DOMu na jednu buňku mřížky (span 1
), takže jim stačí uvést pozici začátku vykreslování.
Záporná čísla
Záporná čísla ve vlastnostech grid-row
a grid-column
počítají umístění zprava nebo zezdola. Pokud bychom tedy chtěli stejnou svislou pozici položky jako v našem příkladu, jen definovanou zápornými čísly, zapsali bychom ji takto:
.item {
grid-column: 2 / 3;
grid-row: -1 / -3;
}
Kódem grid-row:-1/-3
říkáme: Chci umístění od první linky mřížky zezdola až po třetí linku mřížky v tomtéž směru.
Automatické umístění
Hodnota auto
vypíná ruční umísťování a nechá pracovat algoritmus „autoplacementu“, postupného automatického umístění do existujících buněk rozvržení.
Vezměme stejný příklad:
.item {
grid-column: 2 / 3;
grid-row: auto;
}
Prvek bude dále umístěn do druhého sloupce, ale v tomto případě do prvního řádku. Algoritmus automatického umísťování zde vždy začíná a dosud nevykresloval žádné jiné prvky mřížky, které by mohly pozici posunout.
Podpora
Moderní prohlížeče s těmito vlastnostmi nemají problém. Horší je to samozřejmě v MSIE, ale to nevadí, protože podobné vlastnosti tam existují. Autoprefixer nám pomůže a např. grid-row
se přeloží do -ms-grid-row
.
Komentáře
Máte doplnění, komentář nebo jste našli chybu?
Pro přidání názoru se prosím
přihlaste nebo si zřiďte účet.