Flexbox также был трудным для меня, позвольте мне разбить его и попытаться объяснить вашу проблему с Flexbox. И, вероятно, это прояснит ситуацию. Flexbox является одним из направлений и работает на основе контейнеров, чтобы определить это направление.
.page-container{
display:flex;
flex-direction:row;
border:solid 5px red;
padding: 3rem;
justify-content:strech;
align-items:strech;
min-height: 100vh;
}
.page-element {
margin: 0 1rem 0 1rem;
border:solid 1px;
}
.left-container{
flex: 0 1 350px;
margin-left:0;
}
.center-container{
display:flex;
flex-direction:column;
flex:1;
}
.right-container{
flex: 0 1 350px;
margin-right:0;
}
.top-container{
flex: 0 1 150px;
border:solid 1px;
}
.middle-container{
flex: 1 0 50%;
}
.bottom-container{
flex: 0 1 150px;
border:solid 1px;
}
<div class="page-container">
<div class="page-element left-container">
left
</div>
<div class="page-element center-container">
<div class="top-container">
top
</div>
<div class="middle-container">
center
</div>
<div class="bottom-container">
bottom
</div>
</div>
<div class="page-element right-container">
right
</div>
</div>
Когда у вас есть контейнеры, вы можете установить направления в нашем CSS
Так что вам нужно определить 1 ваши первые 3 колонки. Хотя, это может показаться странным, это одна строка во flexbox, и элементы будут располагаться рядом друг с другом, поэтому page-container должен быть flex-direction:row
Другой хитрый это center-container
так как там 3 раздела. Во flexbox это один столбец, поэтому flex-direction
равен column
.
Надеюсь, это поможет и объяснит это.