我有两个 div,一个“容器”和一个“内容”。如果内容在容器内,则适合容器。
#container {
display:block;
width:300px;
margin:auto;
background:green;
}
#content {
display:block;
margin:20px; /* HERE IS THE ERROR */
background:yellow;
}
Run Code Online (Sandbox Code Playgroud)
顶部和底部边距不在父级内部,但左侧和右侧位于父级内部。
为什么会出现这种情况?
编辑: JSFIDDLE示例:
这是由于边距折叠所致- 块级元素的第一个子元素的上边距(假设它也是块级并参与正常流程)将始终与其父级的上边距一起折叠。
解决此问题的一种方法是将子 div 的显示值更改inline-block
为。
#content {
background: yellow;
display: inline-block;
margin: 20px;
}
Run Code Online (Sandbox Code Playgroud)
注意:正如AndyG指出的,您还可以通过在容器 div 上使用填充或边框等多种方式来防止边距折叠。请参阅规格以获取完整列表。