В Google Chrome, как я могу заставить элемент, вложенный внутри члена flexbox (через "member of a flexbox", я имею в виду дочерний элемент с стилем display:flex
), чтобы ограничить его размер к размеру члена flexbox, который он вложен? Например, предположим, что у меня есть следующее:
<div style="display:flex; flex-direction:column; height:100vh;">
<div style="height:60px;">Static header</div>
<div style="flex: 1 1 0; overflow:hidden;">
<div style="overflow:auto; height:100%;" id="problem-is-here">
Lots and lots of content, way too much to fit in the viewport
</div>
</div>
</div>
Поскольку первый дочерний div
из внешнего div
имеет постоянную высоту, он заканчивается ровно на 60 пикселей высотой, а поскольку второй дочерний div
имеет flex-grow
из 1, он получает остальную часть доступное пространство (в данном случае 100% экрана просмотра минус 60 пикселей). Я могу подтвердить, что размеры этого элемента в соответствии с элементом Inspect Element достаточно велики, чтобы заняться остальной частью пространства просмотра.
В Firefox и IE11 из-за height:100%
самый внутренний элемент (id="problem-is-here"
) принимает высоту, вычисленную для своего родителя. Поэтому, поскольку он слишком мал, чтобы отображать его содержимое, а overflow
установлен на auto
, он (а не весь body
) получает вертикальную полосу прокрутки. Это то, чего я хочу.
В Chrome, однако, самый внутренний элемент отображается с достаточной высотой, чтобы содержать весь его контент, который является большей высотой, чем его родитель. Таким образом, поскольку его родительский элемент имеет overflow:hidden
, полосы прокрутки не отображаются, а избыточное содержимое недоступно. Как сообщить Chrome о том, что этот самый внутренний элемент имеет высоту, максимально равную высоте его родительского элемента, когда высота родителя определяется свойством flexbox, а не CSS height
? Обратите внимание, что я не могу дать ни внутреннему div
, ни его родителю определенное значение height
, так как в приложении, над которым я работаю, число других членов flexbox может меняться.
Примечание. Я попробовал несколько предложений из других ответов, таких как установка всех элементов min-height:0
вместо auto
или обеспечение flex-basis
установлено на 0
, но ни один из них не сработал. См.
http://plnkr.co/edit/UBRcrNmR5iDbn3EXu6FI?p=preview
для примера, иллюстрирующего проблему. (div
с id heres-the-problem
является тем, высота которого я хочу ограничить высотой своего родителя.)