Flexbox неправильная работа с максимальной высотой
Моя проблема, вероятно, лучше всего объясняется примером. Этот следующий jsfiddle будет работать в Chrome:
http://jsfiddle.net/ga6g4/
Как вы можете видеть, у меня есть фиксированная высота flexbox с фиксированным заголовком и прокручиваемым телом. Все идет нормально. Однако, если вы измените "высоту" CSS контейнера ".lhs" на max-height:
max-height: 100px;
http://jsfiddle.net/ga6g4/1/
Это ломается. Кажется, теперь думаю, что мой список теперь нулевой высоты! Любая идея, почему это делает то, что она делает, и как я могу это исправить?
EDIT: В моем первоначальном посте я недостаточно описал, как мне это нужно. В основном внешний должен использовать только минимальную высоту, которую он требует, но только до максимума (определяется максимальной высотой). На этом этапе я хочу, чтобы содержимое начиналось с прокрутки.
Ответы
Ответ 1
ОК, вот решение, с которым я столкнулся, если кому-то интересно:
http://jsfiddle.net/vN65r/
В принципе, мне пришлось применить следующее к заголовку с фиксированной высотой:
flex: 0 0 auto;
И следующее к переменной-высоте, прокручивающему телу:
flex: 0 1 auto;
Я надеюсь, что это поможет кому-то
Ответ 2
Предоставление как max-height:100px;
, так и height:100%;
должно работать. http://jsfiddle.net/ga6g4/2/
Ответ 3
Я думаю, что ответ заключается в том, что вы используете flex-direction:column
.
Хотя мне все еще не совсем ясно, что вы пытаетесь добиться перехода на flex-direction:row
, кажется, имеет правильный эффект.
JSfiddle Demo
CSS
.lhs {
position: absolute;
top: 8px;
left: 8px;
width: 250px;
max-height: 100px;
border: 1px solid red;
display: flex;
flex-direction: row;
}
.panel-container {
flex: 1;
overflow: auto;
}
Ответ 4
Barguast ответ хороший. Вот упрощенная версия с использованием Bootstrap:
<div class="h-50 border border-danger">
<div class="d-flex flex-column h-100">
<header>Header</header>
<div class="flex-shrink-1" style="overflow-y: auto;">
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
</div>
<footer>Footer</footer>
</div>
</div>
Хитрость в этом - это flex-shrink-1 в сочетании с overflow-y: auto.