У меня та же проблема в Safari и по той же причине: вы не очищаете свои поплавки в #header
, а #header
не достаточно высок, чтобы вместить всех его всплывающих дочерних элементов.
Если вы увеличите высоту заголовка до 31px, вы должны (но, возможно, нет) получить желаемый макет.Лучшим подходом является добавление overflow: hidden
в качестве четкого исправления, которое сделает все дочерние элементы #header
полностью содержащими #header
, и это помешает им мешать расположению следующей части:
#header {
background-color: #151B54;
height: 30px;
width: 100%;
overflow: hidden;
}
Живой пример: http://jsfiddle.net/ambiguous/EUmyN/
Практическое правило с плавающими элементами - всегда проверять, очищены ли они с помощью overflow: hidden
в их контейнере или, при необходимости, с явным <div style="clear: both;"></div>
внизу контейнера.
Кроме того, пока мы здесь, вам редко требуется width: 100%
для элемента блока, такого как <div>
.Если вы позиционируете это или плаваете, то, возможно, вам понадобится что-то подобное, но не для простого <div>
;элементы блока по умолчанию имеют полную ширину.