Шпаргалка по CSS Flexbox: визуальный гид по свойствам и частым задачам
Полный справочник по Flexbox в CSS с визуальными схемами: justify-content, align-items, flex-direction, выравнивание по центру и адаптивные сетки.
Модуль 04: Flexbox и современные раскладки
Потренируйтесь верстать интерфейсы на Flexbox с автопроверкой кода прямо в браузере.
CSS Flexible Box Layout (Flexbox) — это одномерная модель компоновки, разработанная для эффективного распределения пространства между элементами контейнера, даже если их точный размер неизвестен или меняется динамически.
1. Концепция двух осей: фундамент Flexbox
Все поведение Flexbox подчиняется взаимодействию двух взаимно перпендикулярных осей:
- Главная ось (Main Axis) — направление, вдоль которого выстраиваются элементы (по умолчанию слева направо).
- Поперечная ось (Cross Axis) — направление, перпендикулярное главной оси (по умолчанию сверху вниз).
Ключевое правило двух осей:
Свойствоjustify-contentВСЕГДА управляет выравниванием вдоль главной оси (Main Axis).
Свойствоalign-itemsВСЕГДА управляет выравниванием вдоль поперечной оси (Cross Axis).
Если вы меняетеflex-direction: column, главная ось поворачивается вертикально, иjustify-contentначинает выравнивать по вертикали!
2. Свойства Flex-контейнера (Родителя)
Чтобы активировать Flexbox-контекст, достаточно задать контейнеру:
.container {
display: flex; /* или inline-flex для строчного поведения */
}
2.1 Сводная таблица свойств контейнера
| Свойство | Возможные значения | По умолчанию | Назначение |
|---|---|---|---|
flex-direction | row, row-reverse, column, column-reverse | row | Задает направление главной оси |
justify-content | flex-start, flex-end, center, space-between, space-around, space-evenly | flex-start | Выравнивание вдоль главной оси |
align-items | stretch, center, flex-start, flex-end, baseline | stretch | Выравнивание вдоль поперечной оси |
flex-wrap | nowrap, wrap, wrap-reverse | nowrap | Разрешает перенос элементов на новую строку |
gap | Любые единицы длины (16px, 1rem) | 0 | Задает отступы между дочерними элементами |
Совет эксперта:
Всегда используйте свойствоgap(например,gap: 16px) для отступов между элементами вместо внешних отступовmargin. Свойствоgapподдерживается всеми современными браузерами и не создает паразитных отступов по внешним границам контейнера.
3. Вечная задача верстки: идеальное центрирование блока
Классическая задача центрирования элемента по горизонтали и вертикали решается во Flexbox ровно тремя строчками CSS:
.modal-wrapper {
display: flex;
justify-content: center; /* Центр по горизонтали */
align-items: center; /* Центр по вертикали */
min-height: 100vh; /* Высота во весь экран */
}
4. Свойства дочерних элементов (Flex Items)
Дочерние элементы получают гибкость и могут управлять собственным размером и пропорциями:
4.1 Триада flex: grow, shrink, basis
.item {
/* flex: <flex-grow> <flex-shrink> <flex-basis>; */
flex: 1 1 0%;
}
flex-grow: <number>— коэффициент роста (жадности). Определяет, какую долю свободного пространства заберет элемент (0 — не растет).flex-shrink: <number>— коэффициент сжатия. Определяет, насколько элемент сжимается при дефиците места (0 — сжатие запрещено).flex-basis: <length>— базовый размер элемента до распределения оставшегося пространства.
Обратите внимание:
Сокращениеflex: 1эквивалентноflex: 1 1 0%. Оно указывает элементу занять всю доступную долю свободного пространства и при необходимости сжиматься. Это идеальный выбор для колонок одинаковой ширины.
4.2 Свойство align-self
Позволяет переопределить align-items родителя для одного конкретного элемента:
.special-card {
align-self: flex-end; /* Прижать только этот элемент к низу */
}
5. Готовые практические рецепты
5.1 Прижатый подвал (Sticky Footer)
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1; /* Растягивает контентную область на всю высоту */
}
5.2 Навбар: Логотип слева, меню справа
.navbar {
display: flex;
align-items: center;
gap: 16px;
}
.nav-links {
margin-left: auto; /* Магическое свойство: отодвигает ссылки к правому краю */
}
6. Резюме: коротко о главном
- Главная ось управляется через
justify-content, поперечная — черезalign-items. flex-direction: columnпереворачивает оси.gapисключает необходимость в сложных формулахmargin.margin-left: autoво Flex-контейнере элегантно прижимает блок к правому краю.
Формула успеха Flexbox:
Контейнер: display: flex + gap → Направление: flex-direction → Выравнивание: justify-content & align-items.
Понравилась шпаргалка?
В платформе CopyPastWorld собрано более 400 интерактивных уроков с практическими заданиями, автотестами и поддержкой сообщества.
