У меня есть сетка в HTML, состоящая из элементов разных размеров.Я хотел бы отображать элементы в виде сетки - как по горизонтали, так и по вертикали.
В прошлом я использовал javascript - как библиотека masonry .Но мне интересно, теперь это возможно с помощью CSS с использованием Flex.
Пример HTML:
div class="wrapper">
<div class="grid">
<div class="item">
<h2>Item 1</h2>
<ul>
<li>1</li>
</ul>
</div>
<div class="item">
<h2>Item 2</h2>
<ul>
<li>1</li>
<li>2</li>
</ul>
</div>
<div class="item">
<h2>Item 3</h2>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
Пример CSS:
.wrapper {
width: 480px;
height: 420px;
outline: 1px solid #f00;
padding: 10px;
}
.grid {
display: flex;
flex-direction: row OR column;
flex-wrap: wrap;
}
.item {
padding: 10px;
width: 100px;
outline: 1px solid #00f;
}
JsFiddle здесь: http://jsfiddle.net/BaronGrivet/pcwudrmc/60883/
Используя flex-direction: row;
, я получаю следующий вывод - размер элементов соответствует наибольшему элементу в каждой строке:
![enter image description here](https://i.stack.imgur.com/51d4s.png)
Изменение на flex-direction: column;
- - я получаю следующий вывод - где элементы переполняют родительский DIV:
![enter image description here](https://i.stack.imgur.com/EG0xP.png)
Я бы предпочел использовать flex-direction: column;
но оберните элементы вправо, когда они достигнут нижней части родительского DIV.В этом примере «Элемент 4» будет в верхней части нового столбца.
Возможно ли это в CSS?
Кажется странным, что Flex выполняет обтекание по вертикали, используя row
, но необтекание по горизонтали с использованием column
.