flex-flow: сокращённое свойство
flex-flow— shorthand, объединяющийflex-directionиflex-wrapв одну декларацию на flex-контейнере.
Зачем нужно
Вместо двух отдельных строк flex-direction и flex-wrap можно написать одну — flex-flow. Это компактнее и читабельнее, особенно когда оба свойства используются вместе, что происходит практически всегда в адаптивных раскладках.
Где используется
- Адаптивные карточные сетки
- Переключение направления и переноса через медиазапросы
- Краткая запись при кодревью и в UI-библиотеках
Синтаксис
/* flex-flow: <flex-direction> <flex-wrap> */
.container {
display: flex;
flex-flow: row nowrap; /* по умолчанию */
flex-flow: row wrap; /* горизонтально с переносом */
flex-flow: column nowrap; /* вертикально без переноса */
flex-flow: column wrap; /* вертикально с переносом */
flex-flow: row-reverse wrap; /* обратный порядок с переносом */
}
Примеры
Карточная сетка
.cards {
display: flex;
flex-flow: row wrap; /* = flex-direction: row; flex-wrap: wrap; */
gap: 16px;
}
.card {
flex: 1 1 240px;
}
<div class="cards">
<article class="card">Карточка 1</article>
<article class="card">Карточка 2</article>
<article class="card">Карточка 3</article>
</div>
Адаптивное переключение
.layout {
display: flex;
flex-flow: column nowrap; /* мобильный */
}
@media (min-width: 768px) {
.layout {
flex-flow: row wrap; /* планшет и выше */
}
}
Только flex-direction без flex-wrap
/* Можно указать одно значение */
.menu {
display: flex;
flex-flow: column; /* flex-wrap остаётся nowrap */
}
Эквивалентность
/* Раздельная запись */
.container {
flex-direction: row;
flex-wrap: wrap;
}
/* Shorthand — эквивалентно */
.container {
flex-flow: row wrap;
}
Частые ошибки
flex-flowприменён к элементу — это свойство только для flex-контейнера- Порядок значений важен — сначала
flex-direction, потомflex-wrap; хотя браузеры обычно распознают оба порядка, стандарт требует именно такой - Одно значение — допустимо указать только
flex-directionили толькоflex-wrap; пропущенное значение получает дефолт
Связанные темы
- flex-direction -- направление оси
- flex-wrap -- перенос строк
- flex-direction -- направление оси
- _MOC Flexbox