任何人都可以解释我如何防止兄弟div的边缘影响另一个吗?从逻辑上讲,这对浏览器为什么这样做是不合理的。
我试图让黄色方框让它相对于父母的上/下,但是带有边距顶部的蓝色方框正在影响黄色方框。
section{
position: relative;
}
div.options{
position: absolute;
left: 10px;
top: 10px;
display: inline-block;
background: #ff0;
padding: 50px;
}
div.content{
height: 100px;
width: 100%;
background: #09c;
margin-top: 50px;
}

<article>
<section>
<div class='options'>
</div>
<div class='content'>
<h1>hello world</h1>
</div>
</section>
</article>
&#13;
答案 0 :(得分:1)
在CSS中,两个或多个框(可能是也可能不是兄弟)的相邻边距可以组合形成单个边距。结合这种方式的边距据说会崩溃,结果合并边际称为折叠边距。
一种解决方案是将父元素的overflow
属性设置为默认值visible
以外的其他属性。
auto
或hidden
等值会产生预期结果。
(请参阅上面的链接,了解解决此问题的其他方法。)
section {
position: relative;
overflow: auto;
}
更改overflow
属性的值可建立新的块格式化上下文。
9.4.1 Block formatting contexts
浮动,绝对定位的元素,阻止不是块框的容器(例如内联块,表格单元格和表格标题),以及除“可见”以外的“溢出”的块框(除非该值已传播到视口)为其内容建立新的块格式化上下文。
在块格式化上下文中,框从一个包含块的顶部开始一个接一个地垂直排列。两个兄弟框之间的垂直距离由“边距”属性决定。块格式化上下文中相邻块级框之间的垂直边距折叠。