Сообщается об ошибке webkit (chrome / safari), дети родителей с минимальной высотой не могут наследовать свойство высоты: https://bugs.webkit.org/show_bug.cgi?id=26559
Очевидно, что Firefox тоже затронут (в данный момент не может тестировать в IE)
Возможное решение:
- добавить позицию: относительно # сдерживания
- добавить позицию: абсолютная к # сдерживающая тень-влево
Ошибка не отображается, когда внутренний элемент имеет абсолютное позиционирование.
См. 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/.