Генератор 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, и области, если вы их назвали.

| Запись | Что получится |
|---|---|
| 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.


Когда брать 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. Готовый код копируется целиком.
- Списком через пробел: 1fr 2fr 1fr или 200px 1fr. Кнопка рядом добавляет колонку.
- Кликните по первой и по последней ячейке прямоугольника — элемент растянется на них.
- Переключатель собирает раскладку через grid-template-areas: структура читается прямо в коде.
- Готовые правила для контейнера и для объединённых элементов.
Частые вопросы
Что такое единица 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 внутри ячеек.
Спросите нейросети об инструменте
Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.
Похожие инструменты
Визуальный конструктор 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 генераторов.