Мне удалось создать макет, который вы описали, применив flex-grow: 0
и flex-shrink: 0
к элементам flex.Установив flex-basis
в соответствующие проценты, раскладка поддерживается с наличием или без наличия третьего деления.
.wrapper {
display: flex;
flex-flow: column nowrap;
height: 100vh;
}
.one {
flex: 0 0 16.666%; /* dont grow, dont shrink, starting basis */
background: red;
}
.two {
flex: 0 0 33.333%; /* dont grow, dont shrink, starting basis */
background: yellow;
}
.three {
flex: 0 0 50%; /* dont grow, dont shrink, starting basis */
background: green;
}
<div class="wrapper">
<div class="one">ONE</div>
<div class="two">TWO</div>
<div class="three">THREE</div>
</div>
На этот раз я опускаю третий div и мы получаем ту же раскладку:
.wrapper {
display: flex;
flex-flow: column nowrap;
height: 100vh;
}
.one {
flex: 0 0 16.666%; /* dont grow, dont shrink, starting basis */
background: red;
}
.two {
flex: 0 0 33.333%; /* dont grow, dont shrink, starting basis */
background: yellow;
}
.three {
flex: 0 0 50%; /* dont grow, dont shrink, starting basis */
background: green;
}
<div class="wrapper">
<div class="one">ONE</div>
<div class="two">TWO</div>
</div>