Не существует способа объединения контейнеров во flexbox, но есть способ обработки контейнеров, как если бы их не было.
Это display:contents
Браузеры (за исключением Firefox) удаляют любой элемент с отображаемым значением содержимого из него из дерева специальных возможностей.Это приведет к тому, что элемент и все его дочерние элементы больше не будут анонсированы технологией чтения с экрана.
MDN
Поддержка , к сожалению, не универсальна, но растет.
Тогда ... Просто выровняйте каждый альтернативный элемент в столбце "new" по align-self: flex-end;
* { margin: 0; padding: 0; box-sizing: border-box; } ::before, ::after { box-sizing:inherit; }
.box {
display: flex;
justify-content: center;
align-items: center;
width:150px;
height:150px;
border:2px solid rebeccapurple;
}
body {
width: 55%;
min-width:150px;
margin:1em auto;
border:1px solid limegreen;
display: flex;
flex-direction: column;
}
.box:nth-child(odd) {
align-self: flex-end;
}
.container {
display:contents;
}
<div class="container">
<div class="box">1</div>
<div class="box">3</div>
<div class="box">5</div>
<div class="box">7</div>
<div class="box">9</div>
<div class="box">11</div>
</div>
<div class="container">
<div class="box">2</div>
<div class="box">4</div>
<div class="box">6</div>
<div class="box">8</div>
<div class="box">10</div>
<div class="box">12</div>
</div>