正如您在this picture中看到的那样,我在绿色div
内部有一个橙色div
,没有顶部边框。橙色div
的上边距为30px
,但它也会将绿色div
向下推。当然,添加顶部边框可以解决问题,但我需要绿色div
是无边界的。我该怎么办?
.body {
border: 1px solid black;
border-top: none;
border-bottom: none;
width: 120px;
height: 112px;
background-color: lightgreen;
}
.body .container {
background-color: orange;
height: 50px;
width: 50%;
margin-top: 30px;
}
<div class="header">Top</div>
<div class="body">
<div class="container">Box</div>
</div>
<div class="foot">Bottom</div>
由于
答案 0 :(得分:87)
您可以将overflow:auto
添加到.body
以防止边距崩溃。见http://www.w3.org/TR/CSS2/box.html#collapsing-margins
答案 1 :(得分:9)
您遇到的是保证金崩溃。边距不指定元素周围的区域,而是指定元素之间的最小距离。
由于绿色容器没有任何边框或填充,因此没有任何内容可以包含橙色元素的边距。边缘用于顶部元素和橙色元素之间,就像绿色容器具有边距一样。
在绿色容器中使用填充,而不是橙色元素上的边距。
答案 2 :(得分:1)
使用padding
代替margin
:
.body .container {
...
padding-top: 30px;
}
答案 3 :(得分:1)
不确定这是否适用于您的情况,但我刚刚使用以下CSS属性
解决了这个问题#element {
padding-top: 1px;
margin-top: -1px;
}
#element
被推倒了,因为它的第一个子元素有一个margin-top: 30px
。有了这个CSS,它现在按预期工作:)不确定它是否适用于每个案例,YMMV。
答案 4 :(得分:0)
您可以在绿色框中添加padding-top: 30
,使用top: 30px
在橙色框中使用相对定位,或者使用相同的margin-top: 30px
浮动橙色框。
答案 5 :(得分:0)
您阅读本文档: Box model - Margin collapsing
CSS
.body {
border: 1px solid black;
border-bottom: none;
border-top: none;
width: 120px;
height: 112px;
background-color: lightgreen;
padding-top: 30px;
}
.body .container {
background-color: orange;
height: 50px;
width: 50%;
}
答案 6 :(得分:0)
不确定这听起来有多乱,但是如何添加透明边框?