Генератор CSS Flexbox
Flexbox, основной инструмент для одномерных макетов: ряды карточек, навбары, центрированные hero-блоки, формы. Модель «контейнер-элемент» мощная, но её свойства взаимодействуют неочевидным образом. Этот генератор избавляет от догадок при настройке контейнера: выберите flex-direction, justify-content, align-items, flex-wrap и gap, и получите аккуратное CSS-правило, которое можно вставить прямо в таблицу стилей.
Как сгенерировать CSS
-
1
Выберите направление
Выберите row, column или обратные варианты. Это задаёт flex-direction, ось, вдоль которой располагаются элементы.
-
2
Настройте justify-content
Выберите, как элементы распределяются вдоль главной оси: начало, центр, space-between, space-around или конец.
-
3
Настройте align-items
Выберите, как элементы выравниваются по поперечной оси: stretch, начало, центр или конец.
-
4
Настройте gap и wrap
Добавьте расстояние между элементами в пикселях и решите, переносятся ли элементы на новую строку.
-
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. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.