Генератор CSS Flexbox

Создать CSS
Далее

Flexbox, основной инструмент для одномерных макетов: ряды карточек, навбары, центрированные hero-блоки, формы. Модель «контейнер-элемент» мощная, но её свойства взаимодействуют неочевидным образом. Этот генератор избавляет от догадок при настройке контейнера: выберите flex-direction, justify-content, align-items, flex-wrap и gap, и получите аккуратное CSS-правило, которое можно вставить прямо в таблицу стилей.

Как сгенерировать CSS

  1. 1

    Выберите направление

    Выберите row, column или обратные варианты. Это задаёт flex-direction, ось, вдоль которой располагаются элементы.

  2. 2

    Настройте justify-content

    Выберите, как элементы распределяются вдоль главной оси: начало, центр, space-between, space-around или конец.

  3. 3

    Настройте align-items

    Выберите, как элементы выравниваются по поперечной оси: stretch, начало, центр или конец.

  4. 4

    Настройте gap и wrap

    Добавьте расстояние между элементами в пикселях и решите, переносятся ли элементы на новую строку.

  5. 5

    Скопируйте CSS

    Генератор выводит правило контейнера со всеми свойствами, готовое к вставке в таблицу стилей.

Свойства контейнера

Свойство Значения Эффект
flex-direction row / column / row-reverse / column-reverse Главная ось
flex-wrap nowrap / wrap / wrap-reverse Переносятся ли элементы
justify-content flex-start / center / flex-end / space-between / space-around / space-evenly Распределение по main-оси
align-items flex-start / center / flex-end / baseline / stretch Выравнивание каждой линии по cross-оси
align-content те же значения + space-between / space-around При переносе, распределение линий по cross-оси
gap (row-gap, column-gap) длина Расстояние между элементами

Свойства элемента

Свойство Значения Эффект
flex-grow 0+ (без единиц) Доля свободного места, которую забирает
flex-shrink 0+ (без единиц) Доля переполнения, на которую сжимается
flex-basis длина или auto Стартовый размер до grow/shrink
flex shorthand (1 1 auto, и т.п.) Все три сразу
align-self auto / flex-start / center / flex-end / baseline / stretch Переопределяет align-items для одного элемента
order целое Визуальная перестановка без изменения DOM

Трюк flex: 1

flex: 1, это shorthand для flex: 1 1 0%. Делает элемент таким:

  • Растёт, заполняя доступное пространство (grow: 1)
  • Сжимается при необходимости (shrink: 1)
  • Стартует с нулевого размера (basis: 0%)

Для колонок одинаковой ширины flex: 1 на каждом элементе даёт идеальное деление. Для сайдбаров, которые не должны сжиматься меньше контента, используйте flex: 0 0 240px (без grow, без shrink, basis 240px).

Частые паттерны

Центрированный hero

.hero {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Навбар с лого слева и ссылками справа

.nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.nav-links {
  margin-left: auto;  /* push right */
  display: flex;
  gap: 1rem;
}

Адаптивный ряд карточек

.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
}
.card {
  flex: 1 1 260px;  /* grow/shrink, 260px minimum before wrapping */
}

Поле формы с кнопкой (input гибкий, кнопка фиксированная)

.field {
  display: flex;
  gap: 0.5rem;
}
.field input {
  flex: 1;
}
.field button {
  flex: 0 0 auto;
}

Flexbox против Grid

  • Flexbox: одно измерение (строка ИЛИ колонка). Лучше, когда размеры элементов диктуются контентом или когда вы распределяете пространство вдоль одной линии.
  • Grid: два измерения (строки И колонки с явными треками). Лучше, когда макет одновременно имеет строковую и колоночную структуру.

Для навбара или стека карточек, Flexbox. Для сетки карточек товаров с несколькими рядами выровненных карточек, CSS Grid. Многие реальные страницы используют оба, Grid для верхнего макета и Flexbox внутри компонентов.

Частые подводные камни

  • Элементы не заполняют контейнер: дефолт align-items: stretch действует, только если у элементов нет фиксированной высоты. С явной высотой они остаются того же размера.
  • gap не работает: проверьте поддержку браузера. Flex gap появился поздно; Safari <14.1 его не поддерживал. Сейчас (2024+), повсеместная поддержка.
  • Дети flex-колонки схлопываются: у flex-колонки дефолт align-items: stretch, который растягивает элементы до ширины контейнера. Если один ребёнок задаёт width, он вылезает.
  • order, только визуально: скринридеры и навигация с клавиатуры идут по DOM-порядку. Не используйте order, чтобы добиться осмысленности контента; используйте только для визуального лоска.

Часто задаваемые вопросы

Grid для двумерных макетов страницы (строки и колонки вместе). Flexbox для одномерных распределений (навбар, ряд кнопок, стек). Внутри ячейки Grid, Flexbox для внутреннего макета. Большинство сложных UI используют оба.

Потому что дефолт flex-shrink = 1, но дефолт min-width = auto, что равно ширине контента. Задайте min-width: 0 (или min-inline-size: 0) на элементе, чтобы он мог сжиматься меньше своего intrinsic-размера.

display: flex; justify-content: center; align-items: center; на контейнере. Покрывает подавляющее большинство случаев «отцентрируй эту штуку» двумя строками.

Да, во всех современных браузерах. Safari подключился позже (добавлено в 14.1, апрель 2021); сегодня поддерживают все основные браузеры. Заменяйте отступы на основе margin на gap, когда можно, намного проще.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор цветовой палитры

Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.