У меня есть контейнер div с двумя дочерними div.
Кулачный ребенок перемещается вправо. У второго ребенка верхний край.
По какой-то причине маржа второго ребенка вытаскивает родительский контейнер, в результате чего сбрасываемый элемент также сбрасывается.
Есть ли способ сделать эту работу, не вложив второго ребенка в другой div, чтобы предотвратить срыв?
Элементы являются динамическими, поэтому я не могу просто добавить отрицательный запас на боковую панель, чтобы отрицать границу другого ребенка.
HTML
<div id="content">
<div id="sidebar">sidebar</div>
<div id="messages">
a message
</div>
</div>
CSS
body {
background-color : red;
}
#content {
background-color: blue;
}
#sidebar {
background-color: yellow;
float: right;
}
#messages {
background-color: green;
margin-top : 20px;
}
Дайте overflow:hidden
родительскому div, то есть .content
Добавьте невидимый символ .content
в .content
<div id="content">
<!-- Add this -->
<div id="sidebar">sidebar</div>
<div id="messages">
a message
</div>
</div>
Это то, что вы хотите?
Проверьте ссылку здесь: https://developer.mozilla.org/en-US/docs/Web/CSS/margin_collapsing
Родительский и первый/последний ребенок Если нет границы, отступов, встроенного содержимого или разрешения, чтобы отделить верхний край поля с краем верхнего его первого дочернего блока или без границы, отступы, встроенный контент, высота, min-height или max-height, чтобы отделить крайнее основание блока с краем нижней части его последнего ребенка, тогда эти поля рушится. Разрушенный край заканчивается вне родителя.
Я использовал "встроенный контент", чтобы "исправить" проблему, на самом деле вы можете исправить ее, используя один из следующих способов:
border: 1px solid
для .content
.padding: 1px
к .content
.clear:both
div