Для этого не нужно float
и менять HTML.
Вы can
делаете это только через CSS, вы можете изменить направление своего гибкого бокса на столбец вместо строки.
Но лично я бы подумал, возможно, использовать сетку здесь для основного макета. Он чище и значительно упрощает настройку областей.
.flex-box {
display: flex;
height: 200px;
width: 100%;
background: red;
}
.left {
width: 300px;
min-width: 300px;
height: 100vh;
flex-shrink: 1;
background: yellow;
}
.center {
width: 100%;
height: 100%;
min-width: 900px;
flex-shrink: 2;
background: red;
}
.right {
width: 140px;
height: 200px;
background: yellow;
}
@media (max-width: 800px) {
.flex-box {
flex-flow: column;
flex-wrap: wrap;
}
.left {
height: 100%;
}
.center,
.right{
height: 50%;
}
}
<div class="flex-box">
<div class="left">
left
</div>
<div class="center">
center
</div>
<div class="right">
right
</div>
</div>