
Flexbox CSS: шпаргалка по свойствам с примерами
ДБ
Дмитрий Борисенко
· 5 минут чтения
Flexbox (Flexible Box Layout) — одномерный способ раскладки. Он распределяет свободное место между элементами и выравнивает их внутри контейнера. На нём верстают компоненты, навигационные панели и всё, что должно подстраиваться под ширину.
Шпаргалка: все свойства Flexbox в одной таблице
Если нужно быстро вспомнить конкретное свойство, вот все они на одном экране. Подробный разбор каждого с примерами идёт ниже по статье.
Свойства флекс-контейнера задаются на родителе с display: flex:
| Свойство | Значения | Что делает |
|---|---|---|
flex-direction |
row (по умолчанию), row-reverse, column, column-reverse |
направление главной оси |
flex-wrap |
nowrap (по умолчанию), wrap, wrap-reverse |
переносить ли элементы на новую строку |
justify-content |
flex-start (по умолчанию), flex-end, center, space-between, space-around, space-evenly |
выравнивание по главной оси |
align-items |
stretch (по умолчанию), flex-start, flex-end, center, baseline |
выравнивание по поперечной оси |
align-content |
flex-start, flex-end, center, space-between, space-around, stretch (по умолчанию) |
выравнивание нескольких строк при flex-wrap: wrap |
gap |
любая длина, напр. 1rem |
расстояние между элементами |
Свойства флекс-элемента задаются на дочерних элементах:
| Свойство | Значения | Что делает |
|---|---|---|
flex-grow |
число, 0 по умолчанию |
насколько элемент растёт, если есть свободное место |
flex-shrink |
число, 1 по умолчанию |
насколько элемент сжимается, если места не хватает |
flex-basis |
длина или auto (по умолчанию) |
стартовый размер элемента до распределения свободного места |
flex |
сокращение — grow shrink basis |
flex: 1 = 1 1 0, flex: auto = 1 1 auto |
align-self |
auto (по умолчанию), flex-start, flex-end, center, baseline, stretch |
переопределяет align-items для одного элемента |
order |
число, 0 по умолчанию |
визуальный порядок (не влияет на DOM и Tab-навигацию) |
Держать всё это в голове необязательно. Соберите раскладку визуально в генераторе Flexbox и заберите готовый CSS.
Основы флекс-контейнера
Чтобы создать флекс-контейнер, задайте display: flex:
Основная и поперечная ось
Пока не разберётесь с осями, Flexbox будет казаться непредсказуемым:
Свойства флекс-контейнера
1. justify-content (выравнивание по основной оси)
2. align-items (выравнивание по поперечной оси)
3. flex-wrap
4. align-content (поперечное выравнивание нескольких строк)
5. gap (расстояние между элементами)
Свойства флекс-элементов
1. flex-grow, flex-shrink, flex-basis
Три свойства управляют тем, как элемент делит место:
Это значения по умолчанию, в короткой записи flex: 0 1 auto. Элемент не
растёт, но сжимается, а стартует от размера своего содержимого.
flex: 1 или flex: auto — в чём разница
Вот вопрос, ради которого сюда чаще всего и приходят: «почему мои колонки
получились разной ширины?» Ответ прячется в flex-basis.
flex: 1 обнуляет базовый размер: браузер считает, что элементы занимают ноль,
и делит между ними всё место поровну. Колонки выходят равными, даже если в одной
слово, а в другой абзац.
flex: auto оставляет базовым размером содержимое: сначала каждый элемент берёт
своё, и только остаток делится поровну. Колонка с длинным текстом окажется шире.
Главная ловушка в том, что flex: <число> всегда обнуляет basis. Пишете
flex: 1 и молча получаете flex-basis: 0, а не auto.
И ещё одно. flex-basis работает по главной оси. При flex-direction: column
это высота, а не ширина.
2. align-self (индивидуальное выравнивание по поперечной оси)
3. order (визуальный порядок)
Об этом обычно молчат: order меняет только картинку. Порядок в DOM остаётся
прежним, а значит прежним остаётся и порядок обхода по Tab, и порядок чтения
скринридером.
Человек с клавиатурой увидит, как фокус хаотично прыгает по экрану. Визуально
элементы идут слева направо, а фокус — в исходном порядке разметки. То же
касается row-reverse и column-reverse.
Вывод простой. order годится для декоративной перестановки, но если порядок
важен по смыслу, меняйте разметку, а не CSS.
Распространённые паттерны Flexbox
1. Центрирование содержимого
2. Колонки одинаковой высоты
3. Прижатый к низу футер
4. Медиа-объект
5. Адаптивная навигация
6. Сетка карточек на Flexbox
Flexbox или Grid
Используйте Flexbox, когда:
- работаете с одномерными раскладками;
- размер содержимого должен определять раскладку;
- нужно выравнивание и распределение пространства;
- строите навигационные панели, тулбары или небольшие компоненты.
Используйте Grid, когда:
- работаете с двумерными раскладками;
- нужен точный контроль над строками и колонками;
- строите крупные макеты страниц;
- хотите накладывать элементы друг на друга.
Раскладку на Grid тоже можно собрать визуально, в генераторе CSS Grid.
Почему флекс-элемент не сжимается
Классическая ситуация. Во флекс-контейнере лежит блок с длинным текстом, он вылезает за края и разносит всю раскладку.
Причина неочевидна. У флекс-элемента по умолчанию min-width: auto, то есть уже
своего содержимого он стать не может. Длинное слово, неразрывная строка или блок
с overflow: hidden внутри — и элемент упирается, а контейнер растягивается
следом.
Это ответ на большинство вопросов вида «почему у меня flexbox уехал».
Поддержка браузерами
Flexbox работает везде с 2015 года. Вендорные префиксы (-webkit-box,
-ms-flexbox) относятся к IE10 и Safari 6, писать их руками в 2026-м не нужно,
а если бы и было нужно, это работа Autoprefixer, а не ваша.
Свойств здесь десяток, и половина задач решается связкой display: flex, gap
и flex: 1. Остальное подсматривайте в таблице выше, когда понадобится.
CSS Flexbox генератор
Визуальный генератор CSS Flexbox: расположите и выровняйте элементы, скопируйте готовый код CSS или Tailwind.
Попробовать



