Предположим, у меня есть такая структура HTML:
<div class="a">
<div class="floated-left">...</div>
<div class="floated-left">...</div>
</div>
Я заметил, что если я не установлю overflow:hidden
на .a
, то <div class="a">
не займет вертикальный размер. Например, если я установил его фон на красный, он вообще не будет виден. Проверка его с помощью FireBug показывает, что он есть, но вертикального размера почти нет.
Чтобы исправить это, я обнаружил, что должен установить overflow:hidden
на .a
. Затем первый <div>
перебирает все свое содержимое.
Вот реальный пример:
<html>
<head>
<style>
.a { background-color: red; }
.b { background-color: red; overflow: hidden }
.floated-left { float: left; width: 100px; height: 100px; background-color: blue; }
</style>
</head>
<body>
<p>div with class a, that doesn't overflow:hidden:</p>
<div class="a">
<div class="floated-left">Hi,</div>
<div class="floated-left">Mom!</div>
</div>
<div style="clear:both"></div>
<p>div with class b, that does overflow:hidden:</p>
<div class="b">
<div class="floated-left">Hi,</div>
<div class="floated-left">Dad!</div>
</div>
</body>
</html>
Обратите внимание, что Hi, Mom!
не получает красный фон (без переполнения: скрытый), в то время как Hi, Dad!
получает красный фон (имеет переполнение: скрытый).
Может кто-нибудь объяснить это поведение?
Вот скриншот с примером:

Спасибо, Бода Цидо.