Генератор CSS Grid

Grid раскладывает элементы сразу по двум осям, и главная его сила — единица fr, доля свободного места. Здесь колонки и строки задаются списком: можно смешивать fr, пиксели, auto и minmax, а предпросмотр показывает, как сетка себя ведёт при изменении ширины.

Предпросмотр

Кликните по двум ячейкам — элемент растянется на прямоугольник между ними. Повторный клик по объединённому снимает объединение.

Сетка

Готовый CSS

—

Колонки, строки и единица fr

Grid раскладывает элементы сразу по двум осям: вы описываете колонки и строки, а браузер расставляет содержимое по ячейкам. Главная его находка — единица fr, доля свободного места. Запись 1fr 2fr означает, что вторая колонка получит вдвое больше остатка, и это работает при любой ширине окна без процентов и вычислений.

Колонки задаются списком, в котором можно смешивать fr, пиксели, auto и minmax. Функция minmax задаёт вилку: minmax(200px, 1fr) держит колонку не уже двухсот пикселей и отдаёт ей остаток, когда место есть. Вместе с repeat и auto-fit это даёт отзывчивую сетку без единого медиазапроса.

Предпросмотр в инструменте показывает, как сетка ведёт себя при изменении ширины: колонки переносятся, ячейки перестраиваются. Готовый код содержит и grid-template-columns, и gap, и области, если вы их назвали.

Плакат на модульной сетке
Швейцарская типографика построена на модульной сетке — той же идее, что и CSS Grid. Фото: Викисклад, общественное достояние.
ЗаписьЧто получится
1fr 1fr 1frТри равные колонки
200px 1frБоковая панель и резиновое содержимое
repeat(3, 1fr)То же, что первая строка, короче
repeat(auto-fit, minmax(220px, 1fr))Сетка, которая сама переносит карточки

От швейцарской сетки до марта 2017 года

Модульная сетка пришла в дизайн из швейцарской типографики пятидесятых. Йозеф Мюллер-Брокманн в книге «Модульные системы в графическом дизайне» показал, как одна сетка держит целый журнал: страница делится на равные модули, и всё содержимое садится по ним. Полвека спустя ровно эта идея переехала в браузер.

В вебе сетку долго собирали костылями. Фреймворки вроде Bootstrap эмулировали двенадцать колонок через float и проценты с классами col-md-4 в разметке. Раскладка жила в HTML, менять её без правки шаблона было нельзя.

Спецификация CSS Grid Layout разрабатывалась с 2011 года при участии Microsoft: первая реализация появилась в Internet Explorer 10 со старым синтаксисом. В марте 2017 года Grid вышел почти одновременно в Firefox, Chrome, Safari и Opera — редкий случай синхронного запуска большой возможности. Subgrid, позволяющий вложенной сетке наследовать колонки родителя, добрался до всех браузеров только к 2023 году — на шесть лет позже самого Grid.

Разметка страницы по сетке
Разметочный лист: направляющие задают модули, содержимое садится по ним. Фото: Simon Malz, CC BY-SA 2.0.
Кульман с направляющими
До экрана сетку чертили на кульмане, и правка означала перерисовку. Фото: R. Henrik Nilsson, CC BY 4.0.

Когда брать Grid, а когда Flexbox

Опишите колонки списком и добавьте gap. Для карточек, которые должны сами переноситься, возьмите repeat(auto-fit, minmax(220px, 1fr)): при широком окне карточки встанут в ряд, при узком перенесутся, и ни одного медиазапроса не понадобится. Строки чаще всего оставляют на auto — они вырастут по содержимому.

Grid и Flexbox делят обязанности: сетка страницы удобнее гридом, ряд кнопок или элементы внутри карточки — флексом. Оба свойства работают на прямых потомках контейнера, вложенные элементы о сетке не знают. Одноосевую раскладку соберёт генератор Flexbox, а скруглить карточки поможет генератор border-radius. Именованные области делают код понятнее: вы задаёте сетку строками вроде «header header» и «sidebar main», и каждый блок получает своё имя вместо номеров линий. При правке раскладки достаточно переставить слова в шаблоне. Отрицательные номера линий считают с конца: grid-column: 1 / −1 растягивает элемент на всю ширину сетки независимо от числа колонок, и это самый частый приём для заголовков внутри карточной раскладки.

Проверяйте раскладку на узком экране в первую очередь. Grid чаще всего ломается там, где колонка получила фиксированную ширину в пикселях: на телефоне она не сжимается и выталкивает содержимое за край. Замена фиксированного значения на minmax с разумным минимумом решает это в одну правку.

Выход в браузерахмарт 2017
Первая реализацияInternet Explorer 10
Осейдве
Единица долиfr
Вилка размераminmax()
Отзывчивая сеткаrepeat(auto-fit, minmax())
Отступgap
Работает напрямых потомках

Как пользоваться

Ячейки объединяются мышью: выделяете прямоугольник и получаете элемент на несколько колонок и строк. Отдельно собирается раскладка через именованные области — тот самый способ, при котором структура страницы читается прямо в CSS. Готовый код копируется целиком.

  1. Списком через пробел: 1fr 2fr 1fr или 200px 1fr. Кнопка рядом добавляет колонку.
  2. Кликните по первой и по последней ячейке прямоугольника — элемент растянется на них.
  3. Переключатель собирает раскладку через grid-template-areas: структура читается прямо в коде.
  4. Готовые правила для контейнера и для объединённых элементов.

Частые вопросы

Что такое единица fr

Доля свободного места, оставшегося после фиксированных колонок. Запись 1fr 2fr делит остаток в отношении один к двум. В отличие от процентов, fr считается уже после вычета gap, поэтому колонки не вылезают за контейнер — а вот три колонки по 33,3% вместе с промежутками вылезут.

Чем repeat и minmax полезны на практике

repeat повторяет описание колонки: repeat(3, 1fr) — то же, что 1fr 1fr 1fr. minmax задаёт вилку: minmax(240px, 1fr) держит нижнюю границу в 240 пикселей и разрешает растягиваться дальше. Вместе с auto-fit они дают адаптивную сетку без единого медиазапроса: repeat(auto-fit, minmax(240px, 1fr)).

В чём разница между auto-fit и auto-fill

Обе создают столько колонок, сколько поместится. auto-fill оставляет пустые треки, если элементов меньше, и последние карточки остаются узкими. auto-fit схлопывает пустые треки, и элементы растягиваются на всю ширину. Для сеток карточек почти всегда нужен auto-fit.

Как объединить ячейки

Свойствами grid-column и grid-row с указанием линий: grid-column: 1 / 3 занимает пространство от первой линии до третьей, то есть две колонки. Есть и короткая запись через span: grid-column: span 2. Линии нумеруются с единицы, и их всегда на одну больше, чем колонок.

Когда нужны именованные области

Когда структура важнее координат. Запись grid-template-areas рисует раскладку прямо в CSS: строка «header header» и ниже «sidebar main» читается без чертежа. Перестроить макет под мобильный тогда можно одной заменой этих строк в медиазапросе, не трогая сами элементы.

Grid или flexbox

Grid — когда важно, чтобы колонки совпадали между строками: карточки, таблицы, макет страницы. Flexbox — когда элементы выстраиваются в ряд и их число заранее неизвестно: панель кнопок, теги, шапка. Их спокойно комбинируют: grid для макета, flex внутри ячеек.

Спросите нейросети об инструменте

Отвечает DeepSeek по данным этой страницы и тому, что у вас сейчас на экране: что делает, как устроен, ограничения

Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.

Похожие инструменты

Генератор Flexbox

Визуальный конструктор flex-раскладки: направление, перенос, выравнивание по обеим осям. Отдельно настраиваются grow, shrink, basis и order каждого элемента.

Открыть
Генератор border-radius

Скругление каждого угла отдельно, эллиптические радиусы через слэш, проценты и пиксели. Собирает самую короткую запись из возможных.

Открыть
Генератор CSS-градиентов

Линейный, радиальный и конический градиент с живым предпросмотром. Любое число цветовых точек, угол и позиции, разбор чужого кода обратно в точки.

Открыть
Конвертер CSS-единиц

px в rem, em, pt, проценты, vw и vh при своём базовом размере шрифта и вьюпорте; таблица типовых размеров и генератор clamp() для плавного шрифта.

Открыть
Генератор clip-path

Обрезка блока по фигуре: многоугольник с перетаскиванием точек, круг, эллипс и рамка. Скосы, шестиугольники и звёзды из пресетов.

Открыть
Генератор CSS-анимации

Больше двадцати эффектов появления, внимания и движения. Выдаёт и правило keyframes, и свойство animation целиком.

Открыть

Ещё генераторы

Пароли и тестовые данные, CSS-градиенты, тени и скругления, clip-path и фильтры, анимации, Flexbox и Grid — в разделе 39 генераторов.