Вам нужно установить явную ширину для вашего элемента. На самом деле они растянуты по умолчанию.
Если вы удалите max-width
, у вас будет следующее. Два столбца, где растягивается ваш элемент.
.flex {
display: flex;
flex-flow: column wrap;
height: 100px;
border: 1px solid red;
}
.child1 {
background-color: green;
flex: 1 0 100%;
}
.child2 {
flex: 1 0 20px;
background-color: yellow;
}
.child3 {
flex: 1 0 20px;
background-color: blue;
}
<div class="flex">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
</div>
Добавление max-width
просто ограничит ширину первого элемента в его столбце
.flex {
display: flex;
flex-flow: column wrap;
height: 100px;
border: 1px solid red;
}
.child1 {
background-color: green;
flex: 1 0 100%;
max-width:100px;
}
.child2 {
flex: 1 0 20px;
background-color: yellow;
}
.child3 {
flex: 1 0 20px;
background-color: blue;
}
<div class="flex">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
</div>
И если вы измените выравнивание, вы получите это:
.flex {
display: flex;
flex-flow: column wrap;
height: 100px;
border: 1px solid red;
align-items:flex-start;
}
.child1 {
background-color: green;
flex: 1 0 100%;
}
.child2 {
flex: 1 0 20px;
background-color: yellow;
}
.child3 {
flex: 1 0 20px;
background-color: blue;
}
<div class="flex">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
</div>
Вы ничего не увидите, потому что мы удалили выравнивание по растяжению, а ширина не определена.
Добавьте ширину, чтобы получить нужный результат:
.flex {
display: flex;
flex-flow: column wrap;
height: 100px;
border: 1px solid red;
align-items:flex-start;
}
.child1 {
background-color: green;
flex: 1 0 100%;
width:20%;
}
.child2 {
flex: 1 0 20px;
background-color: yellow;
width:80%;
}
.child3 {
flex: 1 0 20px;
background-color: blue;
width:80%;
}
<div class="flex">
<div class="child1"></div>
<div class="child2"></div>
<div class="child3"></div>
</div>