Вам нужно использовать flex-direction: column вместе с flex-wrap: wrap и задать фиксированную высоту контейнеру. Вот необходимые стили:
.container {
display: flex;
flex-direction: column; /* Располагаем элементы сверху вниз */
flex-wrap: wrap; /* Разрешаем перенос на новую "колонку" */
height: 400px; /* Необходимо задать высоту контейнера */
gap: 10px; /* Отступы между блоками */
}
.block {
width: calc(50% - 5px); /* Половина ширины с учетом отступов */
}
Принцип работы: блоки будут заполнять контейнер сверху вниз, а когда достигнут нижней границы - начнут заполнять следующую "колонку" справа. Высоту контейнера нужно подобрать так, чтобы первые два блока уместились в левой колонке, а следующие два - в правой.
МеДуЗкАУченик (130)
1 месяц назад
да, но мне нельзя устанавливать фиксированную высоту контейнера, ведь таких блоков внутри может быть неограниченное количество
Забыл об этом написать, извините
<div class='container'>
<div class='block'></div>
<div class='block'></div>
<div class='block'></div>
<div class='block'></div>
</div>
div с классом block - это оранжевые блоки на изображении. У них у всех одна ширина, но высота может быть абсолютно разной.
Какие стили мне нужно применить к блоку с классом container, чтобы получить позицианирование, как на изображении?
Сейчас я применяю к нему такие стили:
display: flex;
flex-wrap: wrap;
justify-content: space-between;
Но на выходе получаю не то, что мне нужно.