Вы использовали неправильное свойство overflow-y
для очистки, и вы должны установить min-height
вместо обычной высоты. Попробуйте это:
#static-content {
background-color: #FFFFFF;
margin: 0 auto;
min-height: 100%; /* Set to minimum height so overflow doesn't get hidden */
overflow-y: hidden; /* HIDE overflow; I know, it doesn't make much sense */
position: relative;
width: 960px;
}
Плавающий контент сам по себе
Учитывая, что этот зеленый прямоугольник имеет отступ 20 пикселей (для наглядности), обратите внимание, как одиночный красный прямоугольник, плавающий влево, будет расширяться за пределы своего родительского прямоугольника. Это потому, что плавающий контент на самом деле не занимает «пространство» в визуальной области. Все остальные элементы развернутся под ним, и только text обернется вокруг него.
Очистка плавающего содержимого в родительском
Чтобы противостоять этому и сделать зеленый прямоугольник полностью охватывающим область его дочернего красного прямоугольника, мы можем добавить overflow: hidden
к его стилям. Это расширит коробку достаточно далеко.
Расширение родителя до 100% высоты
Вы можете подумать, что простое добавление height: 100%
- это самый простой способ развернуть его туда, где он должен быть. Однако свойство height
определяет абсолютную высоту. Поскольку плавающий контент на самом деле не занимает вертикальное пространство, наше свойство overflow: hidden
обрезает весь контент, который превышает высоту родительского элемента.
Использование минимальной высоты вместо
Поскольку мы хотим, чтобы он расширился до по крайней мере высоты 100%, мы можем использовать свойство min-height
, чтобы переместить его туда, и при этом поддерживать «автоматическую» высоту, необходимую для создания родительского зеленого поля. полностью охватывают дочернюю красную коробку, позволяя ей преодолеть 100% только тогда, когда это необходимо.
Как вы были настроены
Все элементы по умолчанию установлены на overflow: visible
, чтобы свойство ничего не меняло. Единственное отличие, которое вы имели между этим и первым приведенным мною примером, заключалось в том, что у вас установлено height: 100%
для элемента. Таким образом, родительский элемент расширялся до 100% высоты, но все еще не охватывал всю высоту своего красного дочернего блока.