CSS Flexbox шпаргалка
Flexbox, или Flexible Box Layout, — это современный интерфейс для настраиваемых макетов в CSS. Он позволяет легко управлять выравниванием, направлением и порядком элементов в контейнере, предоставляя более эффективный и интуитивно понятный способ работы с расположением элементов на веб-странице.
Основные концепции Flexbox
-
Флекс-контейнер: элемент, который содержит дочерние элементы флексбокса. Он определяется с помощью свойства
display: flex;. -
Флекс-элементы: все прямые дочерние элементы флекс-контейнера.
Свойства Флекс-Контейнера

Настройки флекс-контейнера определяют поведение его дочерних элементов. Вот ключевые свойства:
-
display:
-
.container { display: flex; } -
flex— превращает элемент в флекс-контейнер. -
inline-flex— делает элемент строчным флекс-контейнером.
-
-
flex-direction:
-
Направление размещения флекс-элементов внутри контейнера.
-
.container { display: flex; flex-direction: row; } -
Значения:
-
row(по умолчанию): элементы размещаются по горизонтали слева направо. -
row-reverse: справа налево. -
column: вертикально сверху вниз. -
column-reverse: снизу вверх.
-
-
-
flex-wrap:
-
Управляет переносом элементов на новую строку/столбец.
-
.container { display: flex; flex-wrap: nowrap; } -
Значения:
-
nowrap(по умолчанию): без переноса. -
wrap: перенос с начала новой строки/столбца. -
wrap-reverse: перенос с конца новой строки/столбца.
-
-
-
justify-content:
-
Выравнивание флекс-элементов вдоль главной оси.
-
.container { display: flex; justify-content: space-between; } -
Значения:
-
flex-start(по умолчанию): элементы прижаты к началу по главной оси. -
flex-end: к концу по главной оси. -
center: центрируются вдоль главной оси. -
space-between: равномерное распределение с первой строкой у начала и последней у конца контейнера. -
space-around: равномерное распределение с равными отступами вокруг каждого элемента.
-
-
-
align-items:
-
Выравнивание флекс-элементов по поперечной оси относительно друг друга.
-
.container { display: flex; align-items: center; } -
Значения:
-
stretch(по умолчанию): элементы растягиваются на всю высоту контейнера. -
flex-start: выровнены у начала поперечной оси. -
flex-end: выровнены у конца поперечной оси. -
center: центрированы по поперечной оси. -
baseline: выровнены по базовой линии текста.
-
-
-
align-content:
-
.container { display: flex; align-content: center; } -
Управляет выравниванием нескольких строк или столбцов внутри флекс-контейнера вдоль поперечной оси при наличии свободного пространства на ней (актуально только если присутствует свойство flex-wrap).
-
Значения такие же, как и у justify-content.
-
Свойства Флекс-Элемента

Каждый флекс-элемент может быть настроен индивидуально для управления его поведением в пределах контейнера:
-
order:
-
.container { display: flex; } .item { order: 3; } -
Задает порядок отображения элемента относительно других флекс-элементов. Элементам можно задавать целочисленное значение порядка: чем больше значение, тем позже будет отображен элемент.
-
-
flex-grow:
-
.container { display: flex; } .item { flex-grow: 1; } -
Коэффициент роста элемента внутри контейнера при распределении свободного пространства на главной оси. Значение по умолчанию 0; положительные значения позволяют элементам расти за пределы их первоначального размера.
-
-
flex-shrink:
-
.container { display: flex; } .item { flex-shrink: 3; } -
Коэффициент сжатия элемента при уменьшении доступного пространства внутри контейнера. По умолчанию равен 1; нулевое значение предотвращает уменьшение размера элемента менее его базового значения.
-
-
flex-basis:
-
.container { display: flex; } .item { flex-basis: 250px; } -
Определяет основной размер элемента перед распределением свободного места вокруг него или между ним и другими элементами (аналогично ширине или высоте).
-
-
align-self:
-
.container { display: flex; align-items: flex-start; } .item { align-self: flex-end; } -
Позволяет изменять настройку align-items только для выбранного элемента, переопределяя общую настройку для всех других его аналогов в контейнере.
-
Примеры использования Flexbox
Простой вертикальный центринг
.container {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
Пример верстки мессенджеров в карточке интернет магазина
выравнивание номера телефона по левому краю, иконки мессенджеров по правому.
Отображение на ПК

Отображение на мобильных

HTML
<div class="messenger">
<div class="icon_tlf"><a href="tel:+79260000000" class="icon_tlf_2" ><!-- .ui-icon.ui-icon-service-callback > i -->
<div class="ui-icon ui-icon-service-callback"><i></i></div></a></div>
<div class="tlf_nomer"><a href="tel:+79260000000">+7 (926) 007-00-00</a></div>
<div class="icon_messenger">
<!-- .ui-icon.ui-icon-service-whatsapp > i -->
<a href="https://wa.me/792600000" class="product__messenger-icon product__messenger-icon_whatsapp" title="WhatsApp"><div class="ui-icon ui-icon-service-whatsapp"><i></i></div></a>
<!-- .ui-icon.ui-icon-service-telegram > i -->
<a href="tg://resolve?domain=domain" class="product__messenger-icon product__messenger-icon_telegram" title="Telegram"><div class="ui-icon ui-icon-service-telegram"><i></i></div></a>
<!-- .ui-icon.ui-icon-service-viber > i -->
<a href="viber://chat?number=%2B7926000000" class="product__messenger-icon product__messenger-icon_viber" title="Viber"><div class="ui-icon ui-icon-service-viber"><i></i></div></a>
</div>
</div>
.messenger {
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin-top: 25px;
}
.tlf_nomer {
font-size: 18px;
font-weight: bold;
}
.ui-icon > i {
padding-top: 70%;
width: 70%;
}
.icon_messenger {
margin-left: auto;
}
Flexbox значительно упрощает создание адаптивных макетов на веб-сайтах, делая код более читабельным и поддерживаемым. С помощью этих свойств можно легко реализовать различные задачи по выравниванию и позиционированию, что позволяет создавать более сложные компоновки без использования множества float или дополнительных оберток HTML-кода.

Добавить комментарий