- Решение CSS3 Multicolumns
- Решение CSS3 Grid layout
Из-за ограничений Flexbox, когда направление - это столбец (необходимо как-то ограничить высоту илииначе он не будет переноситься во второй столбец), это более простая задача для CSS3 Multicolumns :
.col-2 {
columns: 2;
}
.flexbox {
display: flex;
flex-wrap: wrap;
}
.flexbox-element {
flex: 1 1 auto;
}
.col-2 {
columns: 2;
width: 100%;
outline: 1px dashed blue;
}
.col-2 > * {
width: 50%;
min-height: 200px;
outline: 1px dotted red;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
.yellow {
background-color: yellow;
}
.orange {
background-color: orange;
}
.violet {
background-color: violet;
}
.black {
background-color: black;
}
.gray {
background-color: gray;
}
.flexbox-element {
width: 200px;
min-height: 200px;
}
<div class="flexbox" style="flex: 1; width: 500px">
<div class="flexbox flexbox-element col-2" style="flex: 1 1 100%">
<div class="red">A</div>
<div class="green">B</div>
<div class="blue">C</div>
<div class="black">D</div>
<div class="gray">E</div>
</div>
<div class="flexbox-element yellow"></div>
<div class="flexbox-element orange"></div>
<div class="flexbox-element violet"></div>
</div>
Вы также можете использовать CSS3 макет сетки , но вам нужно будет вручную расположить каждый элемент сетки в IE10-11 иEdge 12-15 (текущий Edge 16 поддерживает ту же более новую рекомендацию, что и другие современные браузеры)
Макет сетки (Compat Edge 16+ и другие современные браузеры. IE11 требует явного позиционирования как строки, так и столбца каждый элемент сетки)
➡️ https://codepen.io/PhilippeVay/pen/GdBpJa?editors=0100
.col-2 {
display: grid;
grid-auto-flow: column;
grid-template-columns: repeat(2, minmax(0, 1fr)); /* 2 columns with strict equal width */
}
.col-2 > :nth-child(odd) {
grid-column: 1; /* even items can now only occupy the 2nd column */
}