我有一个带有儿童div的盒子。孩子有保证金。如果我在父级(div.box
)上设置边框,则元素的高度会发生变化,如下图所示。诀窍在哪里?
.box {
background: #0F3;
border: 1px solid #000;
}
.box-border {
background: #0F3;
}
.text {
margin: 40px;
}

<div class="box">
<div class="text">Content</div>
</div>
<div class="box-border">
<div class="text">Content</div>
</div>
&#13;
答案 0 :(得分:1)
您面临的问题称为折叠边距。
父母和第一个/最后一个孩子
如果无边框,填充,内联内容或间隙将块的边距顶部与其第一个子块的边距顶部分开,或者没有边框,填充,内联内容,高度,min-height或max-height将块的边距底部与其最后一个子节点的边距底部分开,然后这些边距会崩溃。 折叠的保证金最终在父母之外 [来源MDN强调我的]
如果您想要阻止没有边框的元素上的折叠边距,您可以在此处查看其他方式:How to disable margin-collapsing?。
position:absolute;
hidden
overflow:hidden;
的示例:
.box {
background: #0F3;
border: 1px solid #000;
}
.box-border {
background: #0F3;
overflow:hidden;
}
.text {
margin: 40px;
}
<div class="box">
<div class="text">Content</div>
</div>
<div class="box-border">
<div class="text">Content</div>
</div>