grid-column и grid-row
grid-columnиgrid-row— свойства grid-элемента, задающие его положение и размер в сетке через номера линий или ключевое словоspan.
Зачем нужно
По умолчанию каждый элемент занимает одну ячейку в порядке потока. grid-column и grid-row позволяют явно разместить элемент: растянуть на несколько колонок/строк, поставить в конкретное место, создать нестандартный макет. Это основа для верстки сложных страничных лейаутов и кастомных сеток.
Где используется
- Растягивание хедера или футера на всю ширину
- Элемент занимает 2–3 колонки (featured-карточка)
- Произвольное размещение без изменения HTML-порядка
Синтаксис
/* grid-column: start-line / end-line */
.item {
grid-column: 1 / 3; /* от линии 1 до линии 3 (2 колонки) */
grid-column: 1 / span 2; /* начиная с линии 1, занять 2 колонки */
grid-column: span 2; /* занять 2 колонки (начало — автопоток) */
grid-column: 2; /* только колонка 2 */
}
/* grid-row: start-line / end-line */
.item {
grid-row: 1 / 3;
grid-row: span 2;
}
Примеры
Хедер на всю ширину
.container {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.header {
grid-column: 1 / -1; /* от первой до последней линии */
}
<div class="container">
<header class="header">Шапка (4 колонки)</header>
<div>Блок 1</div>
<div>Блок 2</div>
<div>Блок 3</div>
<div>Блок 4</div>
</div>
Featured-карточка (2×2)
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 200px;
gap: 16px;
}
.featured {
grid-column: span 2;
grid-row: span 2;
}
<div class="grid">
<div class="featured">Главная карточка</div>
<div>Карточка 2</div>
<div>Карточка 3</div>
<div>Карточка 4</div>
</div>
Явное размещение по координатам
.sidebar {
grid-column: 1 / 2;
grid-row: 1 / 3; /* занимает 2 строки */
}
.content {
grid-column: 2 / 4;
grid-row: 1 / 2;
}
Отрицательные линии
/* -1 всегда означает последнюю линию явной сетки */
.full-width {
grid-column: 1 / -1;
}
/* Последние 2 колонки */
.item {
grid-column: -3 / -1;
}
Частые ошибки
grid-column: 1 / 3— это 2 колонки, не 3 — Grid считает линии, не ячейки: от линии 1 до линии 3 = 2 ячейки-1не работает для неявных треков —-1указывает на конец только явной сетки (заданной черезgrid-template-columns)spanбез начальной позиции — при автопотоке элемент сspan 2может занять неожиданное место
Связанные темы
- grid-area -- сокращённое свойство
- grid-template-areas -- именованные области
- grid-auto-flow -- направление заполнения
- _MOC Grid