当具有边距的元素包含在另一个元素中时,父元素不会一致地包装该边距。
很多事情会导致父母包装孩子的边缘:
> border:solid;
> position:absolute;
> display:inline-block;
> overflow:auto
(这只是从小测试,毫无疑问有更多)。
我认为这与折叠边距有关,但是:
> W3C规范页面没有这种行为的描述。
>这里没有重叠边距。
>所有浏览器的行为似乎在这个问题上是一致的。
>该行为受与边距无关的触发器的影响
默认为overflow的元素的逻辑是什么:auto应该包含与overflow设置为auto的材质不同的材质。
为什么除了普通div的默认行为之外的所有事情都假定边缘由父母包含 – 为什么普通默认不包括边缘?
编辑:最后的答案是,W3C真的指定这种行为,但是
>’自由边距'(接触其父代的顶部或底部的边距不包含在父代)
>“折叠边距”(相邻边距允许重叠)。
演示:
Margins overextending themselvesbody{
margin:0;
}
div.b{
background-color:green;
}
div.ib{
display:inline-block;
background-color:red;
}
div.pa{
background-color:yellow;
position:absolute;
bottom:0; right:0;
}
div.oa{
background-color:magenta;
overflow:auto;
}
div.brdr{
background-color:pink;
border:solid;
}
h1{margin:100px; width:250px; border:solid;}
Is the margin contained?
Is the margin contained?
Is the margin contained?
Is the margin contained?
Is the margin contained?
`