CSS Flexbox — это мощный инструмент для создания гибких одномерных раскладок.
В этом руководстве вы изучите все свойства Flexbox с интерактивными примерами.
Flexbox идеально подходит для:
Центрирования элементов
Создания навигационных меню
Распределения пространства между элементами
Адаптивных раскладок
Что такое Flexbox?
Flexbox (Flexible Box Layout) — это модуль CSS3, который предоставляет
эффективный способ размещения, выравнивания и распределения пространства
между элементами контейнера.
Основные концепции
Flexbox работает с двумя типами элементов:
Flex-контейнер — родительский элемент с display: flex
Flex-элементы — дочерние элементы контейнера
👁️
Базовая структура Flexbox
/* Flex-контейнер */
.container {
display: flex;
}
/* Flex-элементы */
.item {
flex: 1;
}
flex-direction
Свойство flex-direction определяет главную ось
(направление размещения flex-элементов).
Возможные значения:
row — слева направо (по умолчанию)
row-reverse — справа налево
column — сверху вниз
column-reverse — снизу вверх
flex-direction:
row
row-reverse
column
column-reverse
📋 Сгенерированный CSS:
display: flex;
flex-direction: row;
📋 Копировать
👁️
flex-direction: row (по умолчанию)
.container {
display: flex;
flex-direction: row;
}
👁️
flex-direction: column
.container {
display: flex;
flex-direction: column;
}
justify-content
Свойство justify-content выравнивает элементы
вдоль главной оси.
Возможные значения:
flex-start — в начале (по умолчанию)
flex-end — в конце
center — по центру
space-between — равные промежутки между элементами
space-around — равные промежутки вокруг элементов
space-evenly — абсолютно равные промежутки
justify-content:
flex-start
flex-end
center
space-between
space-around
space-evenly
📋 Сгенерированный CSS:
display: flex;
justify-content: center;
📋 Копировать
👁️
justify-content: flex-start
.container {
display: flex;
justify-content: flex-start;
}
👁️
justify-content: center
.container {
display: flex;
justify-content: center;
}
👁️
justify-content: space-between
.container {
display: flex;
justify-content: space-between;
}
align-items
Свойство align-items выравнивает элементы
вдоль поперечной оси.
Возможные значения:
stretch — растянуть (по умолчанию)
flex-start — в начале
flex-end — в конце
center — по центру
baseline — по базовой линии текста
align-items:
stretch
flex-start
flex-end
center
baseline
📋 Сгенерированный CSS:
display: flex;
align-items: center;
📋 Копировать
👁️
align-items: stretch (по умолчанию)
.container {
display: flex;
align-items: stretch;
height: 200px;
}
.container {
display: flex;
align-items: center;
height: 200px;
}
flex-wrap
По умолчанию flex-элементы располагаются в одну линию.
Свойство flex-wrap позволяет переносить элементы
на новую строку.
Возможные значения:
nowrap — без переноса (по умолчанию)
wrap — перенос на новую строку
wrap-reverse — перенос в обратном порядке
flex-wrap:
nowrap
wrap
wrap-reverse
📋 Сгенерированный CSS:
display: flex;
flex-wrap: nowrap;
📋 Копировать
👁️
flex-wrap: nowrap (по умолчанию)
.container {
display: flex;
flex-wrap: nowrap;
}
.container {
display: flex;
flex-wrap: wrap;
}
flex-grow, flex-shrink, flex-basis
Эти свойства управляют размером flex-элементов:
flex-grow — насколько элемент может расти
flex-shrink — насколько элемент может сжиматься
flex-basis — начальный размер элемента
Краткая запись: flex: 1 1 200px
👁️
flex-grow: 1
flex-grow: 1
flex-grow: 1
flex-grow: 1
👁️
flex: 1 1 200px (сокращённая запись)
flex: 1 1 200px
flex: 2 1 200px
.item {
flex: 1 1 200px;
/* flex-grow: 1 */
/* flex-shrink: 1 */
/* flex-basis: 200px */
}
Практические примеры
Давайте рассмотрим несколько практических примеров использования Flexbox.
👁️
Центрирование элемента
.container {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 2rem;
}
.nav-links {
display: flex;
gap: 2rem;
}
👁️
Адаптивная сетка карточек
Карточка 1
Карточка 2
Карточка 3
.cards {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
}
.card {
flex: 1 1 calc(33.333% - 1.5rem);
min-width: 250px;
}