Это просто, если вы можете переключиться на CSS Grid layout
:
создать контейнер сетки вкл flex-cotainer
элемент
поместить второй элемент в первый столбец (с помощью grid-column: 1
) , охватывающий 2 строки (с использованием grid-row: 1 / 3
).
См. Демонстрацию ниже:
.flex-container {
display: inline-grid;
grid-template-columns: auto auto;
}
.flex-container div:nth-child(2) {
grid-column: 1;
grid-row: 1 / 3;
}
.flex-container > div {
background-color: DodgerBlue;
color: white;
width: 100px;
margin: 10px;
text-align: center;
line-height: 75px;
font-size: 30px;
}
<div class="flex-container">
<div><a href="#">1</a></div>
<div><a href="#">2</a></div>
<div><a href="#">3</a></div>
</div>
Решение flexbox - хаки в лучшем случае с использованием отрицательных полей и известных высот -см. ниже:
.flex-container {
display: flex;
flex-wrap: wrap;
width: 200px;
}
.flex-container div:nth-child(1) {
align-self: flex-start;
}
.flex-container div:nth-child(2) {
order: -1;
line-height: 170px;
}
.flex-container div:nth-child(3) {
margin-left: auto;
margin-top: -85px;
}
.flex-container > div {
background-color: DodgerBlue;
color: white;
width: calc(100px - 20px);
margin: 10px;
text-align: center;
line-height: 75px;
font-size: 30px;
}
<div class="flex-container">
<div><a href="#">1</a></div>
<div><a href="#">2</a></div>
<div><a href="#">3</a></div>
</div>