Мне нужен один из дочерних элементов дисплея: flex;чтобы настроить высоту на другие.
Предположим, вы хотите, чтобы зеленое сечение (child3
) имело наибольшую высоту:
- makeубедитесь, что у вас есть
align-items: stretch
(это значение по умолчанию, поэтому не переопределяйте его) - это гарантирует, что каждый flex строки дочерний растягивается до максимальной высоты flex flex child. - переносит содержимоедругие секции (
child1
и child2
) в абсолютно позиционированный элемент. - делают этот элемент-обертку столбцом flexbox , чтобы получить переполнение прямо на желтая секция .
См. Демонстрацию ниже:
.parent {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
/*align-items: baseline;*/
}
.child1 {
background-color: red;
align-self: stretch;
width: 25%;
min-width: 25%;
max-width: 25%;
}
.child2 {
background-color: yellow;
min-height: 0;
min-width: 0;
overflow: auto;
margin: 0 15px;
width: calc(50% - 30px);
max-width: calc(50% - 30px);
display: flex;
flex-direction: column;
flex-shrink: 1;
}
.child3 {
background-color: green;
width: 25%;
min-width: 25%;
max-width: 25%;
}
.child2 .tabl {
flex-shrink: 1;
min-height: 0;
overflow: auto; /* changed to auto */
}
.child1, .child2, .child3 { /* ADDED */
position: relative;
}
.child-wrap { /* ADDED */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
<div class="parent">
<div class="child1">
<div class="child-wrap">
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p></div>
</div>
<div class="child2">
<div class="child-wrap">
<div class="info">
<h2>Element</h2>
</div>
<div class="tabl">
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
</div>
<div class="footer">
<button class="btn">Some button</button>
</div>
</div>
</div>
<div class="child3">
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
</div>
</div>
Предположим, вы хотите, чтобы либо левой или правой секции имели максимальную высоту - в этом случае используйте выше абсолютное позиционирование только для среднего желтого элемента - см. Демонстрацию ниже, где самые высокие из левого или правого элементов определяют высоту всего parent
Обертка :
.parent {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
/*align-items: baseline;*/
}
.child1 {
background-color: red;
align-self: stretch;
width: 25%;
min-width: 25%;
max-width: 25%;
}
.child2 {
background-color: yellow;
min-height: 0;
min-width: 0;
overflow: auto;
margin: 0 15px;
width: calc(50% - 30px);
max-width: calc(50% - 30px);
display: flex;
flex-direction: column;
flex-shrink: 1;
}
.child3 {
background-color: green;
width: 25%;
min-width: 25%;
max-width: 25%;
}
.child2 .tabl {
flex-shrink: 1;
min-height: 0;
overflow: auto; /* changed to auto */
}
.child1, .child2, .child3 { /* ADDED */
position: relative;
}
.child-wrap { /* ADDED */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
<div class="parent">
<div class="child1">
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
</div>
<div class="child2">
<div class="child-wrap">
<div class="info">
<h2>Element</h2>
</div>
<div class="tabl">
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
<p>Some element four</p>
</div>
<div class="footer">
<button class="btn">Some button</button>
</div>
</div>
</div>
<div class="child3">
<p>Some element one</p>
<p>Some element two</p>
<p>Some element three</p>
</div>
</div>