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-startgrid-column-endgrid-row-startgrid-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 1ugrid-columnznamená „zabírá jeden sloupec“. Tady je to zbytečné, fungovalo by to i bez tého hodnoty. - Zápis
span 2ugrid-rowuž 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.