CSS:外边距合并

块的顶部外边距和底部外边距有时候会被折叠为单个外边距,其大小为两值中的最大值,这种行为就被称为外边距合并。 一般发生外边距合并主要有以下三种情况:

  • 相邻兄弟姐妹元素

  • 父元素和子元素

  • 空元素

相邻兄弟姐妹元素

两个兄弟元素之间的外边距,会取两个元素外边距的最大值。

<p style="margin-bottom: 30px;">这个段落的下外边距被合并...</p>
<p style="margin-top: 20px;">...这个段落的上外边距被合并。</p>

按照上面的例子可以得出,两个p元素之间距离为30px。

父元素和子元素

这种情况又可以分为以下两种:

  • 父元素的上外边距和第一个子元素的上外边距

  • 父元素的下外边距和最后一个子元素的下外边距

这两种情况,最终显示出来的结果都是取二者中的最大值。

空元素

自己的上外边距会和自己的下外边距合并

<p style="margin-bottom: 0px;">这个段落的和下面段落的距离将为20px</p>

<div style="margin-top: 20px; margin-bottom: 20px;"></div>

<p style="margin-top: 0px;">这个段落的和上面段落的距离将为20px</p>

这样第一个p元素和第三个p元素之间距离为20px

阻止合并方法

这部分将讲解不会发生外边距合并的情况。

通用方法

  • 处于静态流元素会发生合并,所以float和position:absolute都不会发生合并
  • 设置为inline-block ,也不会发生合并

针对于父元素和子元素情况不合并方法

以下都不会发生合并

  • 设置了清除浮动属性

  • 因为margin需要直接接触才能合并,所以父元素或子元素中有border或padding,或者二者之间有元素

注意

如果两个外边距值中有一个为0,也会发生合并。
如果有负外边距,合并后外边距为最大正边距加上最小负边距(绝对值最大的一个),如上面元素下边距为20px,下面元素上边距为-20px,则最后为0px
参考资料

外边距合并MDN

「CSS」Margin Collapsing - 外边距合并

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

推荐阅读更多精彩内容

  • 块的顶部外边距和底部外边距有时被组合(折叠)为单个外边距,其大小是组合到其中的最大外边距,这种行为称为外边距塌陷(...
    zh_yang阅读 4,272评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,690评论 1 92
  • 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度...
    LuckyJin阅读 4,712评论 0 0
  • 注释:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
    小锋子_Gruad阅读 1,324评论 0 0
  • 1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动元素特征: 浮动元素会脱离正常...
    annynick阅读 3,089评论 0 0

友情链接更多精彩内容