У меня есть гибкий контейнер, в котором для flex-direction установлено значение column.
Предположим, есть два гибких элемента, и второй элемент содержит дополнительные контейнеры с текстом.
Я не хочу, чтобы второй гибкий элемент выходил за пределы гибкого контейнера. Вместо этого я хочу отобразить полосу прокрутки для внутреннего контейнера с текстом во втором гибком элементе.
Как добавить полосу прокрутки в контейнер, находящийся внутри гибкого элемента?
.container {
display: flex;
flex-direction: column;
max-width: 200px;
max-height: 100px;
border: 1px solid red;
}
.scrollable{
overflow: auto;
}<div class = "container">
<div class = "container-item">Lorem ipsum</div>
<div class = "container-item">
<div>Lorem, ipsum</div>
<div class = "scrollable"> Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </div>
</div>
</div>





Сделайте свой .container-item гибким столбцом и примените min-height:0.
.container {
display: flex;
flex-direction: column;
max-width: 200px;
max-height: 150px;
border: 1px solid red;
}
.container-item,
div {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
.scrollable {
overflow: auto;
}<div class = "container">
<div class = "container-item">Lorem ipsum</div>
<div class = "container-item">
<div>Lorem, ipsum</div>
<div class = "scrollable"> Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </div>
</div>
</div>Не могли бы вы помочь мне понять, почему min-height: 0 решает эту проблему?
Немного улучшен ответ @Paulie_D, чтобы другие <div> не уменьшались:
.container {
display: flex;
flex-direction: column;
max-width: 200px;
max-height: 150px;
border: 1px solid red;
}
.container-item {
flex: none;
display: flex;
flex-direction: column;
&:has(.scrollable) {
flex: auto;
min-height: 0;
div {
flex: none;
&.scrollable {
flex: auto;
overflow: auto;
}
}
}
}<div class = "container">
<div class = "container-item">Lorem ipsum</div>
<div class = "container-item">
<div>Lorem, ipsum</div>
<div class = "scrollable"> Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </div>
</div>
</div>
Кажется, в вашем примере чего-то не хватает. Вы его запускали?