Вы можете использовать flex.Для каждого «направления» используйте контейнер.Чтобы разделить соотношение 1: 2, используйте flex-grow: 1
и flex-grow: 2;
.
Также важно использовать
flex-shrink: 0;
flex-basis: 0;
, если вы хотите сохранить соотношение независимо от содержимого внутри, в противном случае,браузер изменит размер div в соответствии с содержимым внутри них.
Существует более короткий способ записи всех 3:
flex: [flex-grow], [flex-shrink], [flex-basis];
, но IE не поддерживает его, поэтому я предпочитаюиспользуя долгий путь
.out-container {
display: flex;
flex-direction: row;
}
.inner-cont {
display: flex;
flex-direction: row;
flex-grow: 2;
}
.container {
flex-grow: 2;
flex-shrink: 0;
flex-basis: 0;
}
.container {
display: flex;
flex-direction: column;
height: 100vh;
width: 70vw;
}
.left,
.right,
.middle,
.top {
padding: 10px;
border: 1px solid black;
}
.left {
flex-grow: 1;
flex-shrink: 0;
flex-basis: 0;
background-color: #aaeffe;
}
.top {
flex-basis: 0;
flex-grow: 1;
flex-shrink: 0;
background-color: #69e2fd;
}
.middle{
flex-basis: 0;
flex-grow: 1;
flex-shrink: 0;
background-color: #38d0fd;
}
.right{
flex-basis: 0;
flex-grow: 1;
flex-shrink: 0;
background-color: #1fbbfb;
}
<div class="out-container">
<div class="left">Left Content</div>
<div class="container">
<div class="top">Top content</div>
<div class="inner-cont">
<div class="middle">Middle Content</div>
<div class="right">Right Content</div>
</div>
</div>
</div>