Генератор Flexbox

Flexbox раскладывает элементы вдоль одной оси, и почти вся путаница в нём — от того, какая ось считается главной. Инструмент показывает это наглядно: меняете направление, и подписи у выравнивания меняются местами, потому что justify-content всегда работает по главной оси, а align-items по поперечной.

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

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

Контейнер

Выбранный элемент

Готовый CSS

—

Главная ось и всё остальное

Flexbox раскладывает элементы вдоль одной оси и сам делит между ними свободное место. Путаница в нём почти всегда об одном: какая ось считается главной. При direction row главная ось горизонтальная, и justify-content раздвигает элементы влево-вправо, а align-items прижимает их по вертикали. Стоит поставить column, и обе роли меняются местами.

Инструмент показывает это наглядно: вы меняете направление, и подписи у выравнивания переезжают. Кроме выравнивания настраиваются перенос строк, отступы между элементами и поведение каждого блока по отдельности — насколько он готов растягиваться и сжиматься. Готовый код собирается сразу и вставляется в стили без правки.

Свойство flex у элемента — это три числа в одном: способность расти, способность сжиматься и базовый размер. Запись flex: 1 означает, что блок разделит свободное место поровну с такими же соседями. Запись flex: 0 0 200px делает блок ровно двухсотпиксельным и запрещает ему меняться.

Модульная сетка в типографике
Модульная сетка в печати: раскладка по направляющим появилась задолго до вёрстки в браузере. Фото: Викисклад, общественное достояние.
СвойствоЧто делаетЧастое значение
flex-directionЗадаёт главную осьrow / column
justify-contentРаскладка по главной осиspace-between
align-itemsВыравнивание по поперечнойcenter
flex-wrapПеренос на новую строкуwrap
gapОтступ между элементами16px

От таблиц и float до гибкой раскладки

До двухтысячных страницы верстали таблицами: сетку строили из tr и td, потому что других инструментов раскладки не было. Затем пришли float и позиционирование — приёмы, придуманные для обтекания картинки текстом и приспособленные под колонки. Отсюда родились хаки вроде clearfix, без которых родительский блок не замечал высоты своих детей.

Рабочий черновик Flexible Box Layout появился в 2009 году, и синтаксис в нём менялся трижды: box, flexbox, flex. Из-за этого в старых руководствах встречаются три несовместимых набора свойств, и код из статьи 2011 года сегодня не работает. Устоявшаяся версия закрепилась к 2012 году, а массовая поддержка браузерами пришла к 2015-му.

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

Ручной набор в типографии
Ручной набор: пробельный материал между словами — прямой предок gap и justify-content. Фото: Wilhei, CC BY 3.0.
Текстовый терминал
Первые страницы наследовали логику терминала: текст шёл потоком сверху вниз. Фото: Seth Morabito, CC BY-SA 2.0.

Как собрать раскладку и не поймать переполнение

Начните с направления оси, дальше выберите выравнивание. Если элементы должны разъехаться по краям, берите space-between; если сгруппироваться по центру — center с заданным gap. Перенос включайте, когда блоков много и они не обязаны помещаться в одну строку: без wrap flex сожмёт их до нечитаемого размера.

Частая ошибка — забыть min-width: auto. По умолчанию flex-элемент не сжимается уже своего содержимого, поэтому длинное слово или таблица внутри распирают всю раскладку. Лечится правилом min-width: 0 на элементе. Для раскладки сразу по двум осям берите генератор Grid, а перевести размеры в относительные единицы поможет конвертер CSS-единиц. Отдельная тонкость — свойство align-content: оно управляет тем, как распределяются строки при переносе, и работает только когда строк больше одной. Его регулярно путают с align-items, и от этого выравнивание в многострочном флексе ведёт себя неожиданно.

Черновик спецификации2009
Устоявшийся синтаксис2012
Массовая поддержка2015
Осейодна
flex: 1делить место поровну
flex: 0 0 200pxфиксированный размер
Отступ между элементамиgap
Лечение переполненияmin-width: 0

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

Настраиваются и контейнер, и отдельные элементы — можно задать разный grow и basis и посмотреть, как делится свободное место. Число блоков и их содержимое меняются, чтобы проверить поведение на реальных данных: одинаковые квадраты скрывают половину проблем. Готовый CSS собирается для контейнера и для тех элементов, у которых свойства отличаются от значений по умолчанию.

  1. Строка или колонка. От него зависит, какая ось главная и что делает каждое выравнивание.
  2. justify-content распределяет по главной оси, align-items прижимает по поперечной.
  3. Клик по блоку открывает его свойства: grow, shrink, basis, order и своё выравнивание.
  4. Готовые правила для контейнера и для изменённых элементов.

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

Какая ось считается главной

Та, вдоль которой выстраиваются элементы, и задаёт её flex-direction. При row главная — горизонтальная, при column — вертикальная. Это ключ ко всему: justify-content работает по главной оси, align-items по перпендикулярной ей. Смените направление на column — и justify-content начнёт выравнивать по вертикали.

Чем отличаются grow, shrink и basis

basis — начальный размер элемента до распределения места. grow — доля свободного места, которую он заберёт, если место осталось. shrink — доля сжатия, если места не хватило. Значения по умолчанию 0, 1 и auto: элемент не растягивается, но сжимается. Короткая запись flex: 1 разворачивается в grow 1, shrink 1, basis 0%.

Почему элемент не сжимается меньше содержимого

Из-за min-width со значением auto, которое действует на flex-элементы по умолчанию. Длинное слово или широкая картинка не дают блоку стать уже. Лечится явным min-width: 0 на элементе — это самая частая причина, по которой flex-раскладка вылезает за экран.

Чем flexbox отличается от grid

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

Что делает align-content

Распределяет строки между собой, когда включён перенос и строк больше одной. При одной строке свойство не действует вообще — это регулярный источник недоумения. Не путать с align-items, который выравнивает элементы внутри своей строки.

Как задать промежутки между элементами

Свойством gap: оно не добавляет лишнего поля по краям. Отступы приходится потом убирать у крайних элементов, а gap ставит промежутки только между ними. Поддерживается во всех актуальных браузерах с 2020 года и работает и в flex, и в grid.

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

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

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

Генератор CSS Grid

Колонки и строки в fr, px и auto, объединение ячеек мышью и именованные области. Выдаёт готовый grid-template с областями.

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

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

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

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

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

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

Открыть
Генератор CSS filter

Размытие, яркость, контраст, насыщенность, оттенок, сепия и тень по контуру. Предпросмотр на своей картинке, файл остаётся в браузере.

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

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

Открыть

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

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