Це повідомлення про помилку webkit (chrome / safari); діти батьків із мінімальним зростом не можуть успадкувати властивість висоти: https://bugs.webkit.org/show_bug.cgi?id=26559
Мабуть, також впливає Firefox (наразі не можна перевірити IE)
Можливе вирішення:
- Додати позицію: відносно #containment
- додати позицію: абсолютна до # містити-тінь-зліва
Помилка не відображається, коли внутрішній елемент має абсолютне позиціонування.
Дивіться http://jsfiddle.net/xrebB/
Редагувати 10 квітня 2014 року
Оскільки я зараз працюю над проектом, для якого мені справді потрібні батьківські контейнери min-height
та дочірні елементи, що успадковують висоту контейнера, я провів ще кілька досліджень.
По-перше: я вже не впевнений, чи справді поведінка браузера насправді є помилкою. Специфікації CSS2.1 кажуть:
Відсоток обчислюється відносно висоти згенерованого блоку, що містить блок. Якщо висота блоку, що містить, не вказана явно (тобто це залежить від висоти вмісту), і цей елемент не є абсолютно розташованим, значення обчислюється як "auto".
Якщо я поміщаю на контейнер мінімальну висоту, я не вказую прямо його висоту - тому мій елемент повинен отримати auto
висоту. І саме це робить Webkit - і всі інші браузери.
По-друге, вирішення я знайшов:
Якщо я встановлюю мій контейнер елемент display:table
з height:inherit
він діє точно так же, як якщо б я дати йомуmin-height
100%. І що ще важливіше - якщо я встановити дочірній елемент, display:table-cell
він ідеально успадкує висоту елемента контейнера - будь то 100% або більше.
Повний CSS:
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
Розмітка:
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
Дивіться http://jsfiddle.net/xrebB/54/ .
display:flex
іflex-direction:column
і дати дитиніflex:1
.