外边距合并问题

写demo的时候遇到这样一个问题

.p{ 
    width:150px;
    height:150px;
    margin:0px auto;
    background-color: yellow;
}
.c{
    width:120px;
    height: 120px;
    margin-top: 50px;
    background-color: pink;
}
<div class="p">
    <div class="c"></div>
</div>
demo-1.png

但是当父元素设置了padding或者border时,子元素的margin值就会在父元素内部

demo-2
    一个盒子如果没有上补白(padding-top)和上边框(border-top),那么这个盒子的上边距会
和其内部文档流中的第一个子元素的上边距重叠。
    父元素的第一个子元素的上边距margin-top如果碰不到有效的border或者padding。
就会不断一层一层的找自己“领导”(父元素,祖先元素)的麻烦。只要给领导设置个有效的border
或者padding就可以有效的管制这个目无领导的margin防止它越级,把自己的margin当领导的margin执行。
为父元素例子中的middle元素增加一个border-top或者padding-top即可解决这个问题。

如果块级父元素中,不存在上边框、上内补、inline content、 清除浮动 这四条属性(对于上边框和上内补,也可以说,当上边距及上内补宽度为0时),那么这个块级元素和其第一个子元素的上边距就可以说”挨到了一起“。此时这个块级父元素和其第一个子元素就会发生 上外边距合并 现象,换句话说,此时这个父元素对外展现出来的外边距将直接变成这个父元素和其第一个子元素的margin-top的较大者。
类似的,若块级父元素的 margin-bottom 与它的最后一个子元素的margin-bottom 之间没有父元素的 border、padding、inline content、height、min-height、 max-height 分隔时,就会发生下外边距合并现象。
margin-collapse

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 1.在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 概念:在CSS当...
    饥人谷_任磊阅读 4,039评论 0 3
  • 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度...
    种谔阅读 3,813评论 2 5
  • 1. 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 外边距合并:外...
    进击的阿群阅读 4,549评论 1 2
  • 一、在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 在CSS当中,相...
    dengpan阅读 3,733评论 0 0

友情链接更多精彩内容