CSS:父级没有边框时的上边距

eivnm1vs  于 2022-11-19  发布在  其他
关注(0)|答案(7)|浏览(180)

正如您在this picture中所看到的,我在绿色div中有一个橙子div,没有上边框。橙色div有一个30px上边距,但它也将绿色div向下推。当然,添加上边框可以解决这个问题,但我需要绿色div成为无上边框。我该怎么做呢?
第一个

vxqlmq5t

vxqlmq5t1#

可以将overflow:auto添加到.body以防止边距折叠。请参阅http://www.w3.org/TR/CSS2/box.html#collapsing-margins

krcsximq

krcsximq2#

您所遇到的是边距折叠。边距并不指定元素周围的区域,而是指定元素之间的最小距离。
由于绿色容器没有任何边框或填充,因此没有任何内容可以包含橙子元素的边距。边距在顶部元素和橙色元素之间使用,就像绿色容器具有边距一样。
在绿色容器中使用填充,而不是在橙子元素上使用边距。

23c0lvtd

23c0lvtd3#

使用padding而不是margin

.body .container {
    ...
    padding-top: 30px;
}
uqxowvwt

uqxowvwt4#

不确定这是否适用于您的情况,但我刚刚用以下CSS属性解决了这个问题

#element {
    padding-top: 1px;
    margin-top: -1px;
}

#element被下推,因为它的第一个子元素有一个margin-top: 30px。有了这个CSS,它现在可以正常工作了:)不确定它是否对每种情况都有效,YMMV。

kx5bkwkv

kx5bkwkv5#

您可以在绿色框上添加padding-top: 30,在橙子框上使用top: 30px的相对定位,或者浮动橙色框并使用相同的margin-top: 30px

mnowg1ta

mnowg1ta6#

您阅读此文档:Box模型-边缘折叠
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%;
}
vd2z7a6w

vd2z7a6w7#

不知道这听起来有多俗气,但是添加一个透明边框怎么样?

相关问题