Эта проблема возникает для меня в IE8 и Chrome, что заставляет меня думать, что это стандарт.
Я создаю сайт с заголовком и меню, используя DIV, которые не имеют никакого контента, но имеют фоновые изображения и высоты / ширины, установленные в CSS. Я хочу, чтобы внутренний DIV имел маржу против родительского div, но он применяет маржу к родительскому div. Помещение контента в div исправляет это. IE7 не имеет этой проблемы. Я не хочу использовать
, потому что он выбрасывает вещи и выглядит как хак.
См. Пример кода для воссоздания ниже:
<style>
#header{
width:600px;
height:300px;
background-color:red;
}
#headerMenu{
height:100px;
width:500px;
margin-left:auto;
margin-right:auto;
background-color:blue;
margin-top:20px;
}
</style>
<div id="header">
<div id="headerMenu">
</div>
</div>
Если вы предоставляете родительское содержимое div или даже границу, макет работает правильно. Я сталкивался с этой же проблемой несколько раз на этом сайте. Я хотел добавить на верхний край списка пунктов меню, но так как div headerMenu (его родитель) также не имеет никакого содержимого, оно всплывает из свойства.
Что происходит?