Flexbox. Часть 1
Flexbox (Flexible Box Layout) — мощный инструмент для создания гибких и адаптивных раскладок. Он позволяет легко выравнивать элементы, распределять пространство и управлять порядком.
1. display: flex — включаем флекс
Свойство display: flex превращает родительский элемент в флекс-контейнер, а его прямые дочерние элементы — в флекс-элементы.
По умолчанию все флекс-элементы выстраиваются в строку (row) и сжимаются под ширину своего содержимого. При flex-direction: column элементы сжимаются под высоту содержимого, но растягиваются по ширине.
.flex-container {
display: flex;
}
Три элемента — в одной строке, сжаты под ширину содержимого
2. flex-direction — направление оси
Определяет, в каком направлении выстраиваются флекс-элементы.
Возможные значения:
row— по горизонтали (слева направо) — значение по умолчаниюrow-reverse— по горизонтали (справа налево)column— по вертикали (сверху вниз)column-reverse— по вертикали (снизу вверх)
flex-direction: row
.container {
display: flex;
flex-direction: row;
}
flex-direction: row-reverse
.container {
display: flex;
flex-direction: row-reverse;
}
flex-direction: column
.container {
display: flex;
flex-direction: column;
}
flex-direction: column-reverse
.container {
display: flex;
flex-direction: column-reverse;
}
flex-direction: row элементы сжимаются под ширину содержимого. При flex-direction: column элементы растягиваются по ширине (на всю доступную ширину контейнера), но сжимаются по высоте под содержимое. В примере column и column-reverse у родителя задана ширина 200px, чтобы показать растяжение.
3. justify-content — выравнивание по главной оси
Управляет распределением свободного пространства вдоль главной оси (направления флекса).
Возможные значения:
flex-start— прижаты к началу (по умолчанию)flex-end— прижаты к концуcenter— по центруspace-between— равномерно, первый у начала, последний у концаspace-around— равные отступы вокруг каждогоspace-evenly— полностью равные отступы между и по краям
justify-content: flex-start
.container {
display: flex;
justify-content: flex-start;
}
justify-content: flex-end
.container {
display: flex;
justify-content: flex-end;
}
justify-content: center
.container {
display: flex;
justify-content: center;
}
justify-content: space-between
.container {
display: flex;
justify-content: space-between;
}
justify-content: space-around
.container {
display: flex;
justify-content: space-around;
}
justify-content: space-evenly
.container {
display: flex;
justify-content: space-evenly;
}
4. align-items — выравнивание по поперечной оси
Управляет выравниванием флекс-элементов вдоль поперечной оси (перпендикулярной главной).
Возможные значения:
stretch— растягиваются на всю высоту (по умолчанию)flex-start— прижаты к началуflex-end— прижаты к концуcenter— по центруbaseline— по базовой линии текста
align-items: stretch (по умолчанию)
.container {
display: flex;
align-items: stretch;
}
align-items: flex-start
.container {
display: flex;
align-items: flex-start;
}
align-items: flex-end
.container {
display: flex;
align-items: flex-end;
}
align-items: center
.container {
display: flex;
align-items: center;
}
✅ Все блоки выровнены по геометрическому центру. Они «висят» ровно посередине контейнера.
align-items: baseline
.container {
display: flex;
align-items: baseline;
}
✅ Блоки выровнены по базовой линии текста (нижней линии букв). Обратите внимание, как «маленький» и «КРУПНЫЙ» выровнены по нижнему краю букв, несмотря на разную высоту блоков.
- center — выравнивает блоки по их геометрическому центру (середине блока).
- baseline — выравнивает блоки по базовой линии текста (воображаемой линии, по которой «стоят» буквы).
center — все три блока центрированы по вертикали. baseline — тексты "стоят" на одной линии, поэтому маленький блок приподнимается, а крупный опускается.
flex-direction: row главная ось — горизонтальная (x), поперечная — вертикальная (y). При flex-direction: column — наоборот.