外边距合并在排版上带来非常大的便利,但是人们对其不甚了解,导致使用外边距的时候总是出现繁多问题,今日写下一片文章,总结一下外边距合并。

三种基本的外边距合并

只有上外边距和下外边距才会触发外边距合并,左外边距和右外边距不会。外边距合并都是基于以下三种基本的外边距合并。

1. 相邻的同胞元素

我们考虑两个连续的 div,他们的上下左右的边距都是 50px。此时,第一个区域的下外边距 和 第二个区域的上外边距 合并,故他们的间隔是 50px。

<style>.margin-box {width: 50px;height: 50px;margin: 50px;background: #fae900;}
</style><div class="margin-box"></div>
<div class="margin-box"></div>


中间边距合并啦~

2. 父元素与子元素

  • 第一个子元素的上外边距和父元素的上外边距会进行合并

  • 最后一个子元素的下外边距和父元素的下外边距会进行合并

合并的视觉效果就是这些合并的外边距 表现为父元素的外边距

我们使用一个有颜色区域包含另外一个不同颜色的区域。里面的区域所有的外边距设为50px。

<div style="background: #cccdd1;"><div class="margin-box"></div>
</div>

我们可以看到, margin-box 的左边和右边都展示为 #cccdd1, 而由于上边和下边的外边距和父元素的合并了,并表示为父元素的外边距,故颜色为父元素的父元素的背景色(若又发生合并,递推即可)。

细心的读者会发现,我并没有设置父元素的 margin,何来合并一说?
这是因为当 margin 为 0 的时候也会发生合并。

3. 空元素

它自己的上外边距和下外边距合并了。°(°ˊДˋ°) °

阻止外边距合并

第二种情况不合并

  1. 设置 overflow: hidden;(不为 visible 都可)。

  2. 由于 margin 需要直接接触才能够合并,根据盒子模型,我们可以设置父元素的 边框 或 内边距,或者使用某些元素将第一个元素和父元素隔开(那就不是第一个元素了)。

三种情况都不合并

  1. 只有在静态流的元素才会发生外边距合并,故设置 float, position: absolute; 都可以使得外边距在何种情况都不合并。

  2. inline-block 是个例外,它既没有脱离文档流,但是它的所有的外边距都不会合并。

DEMO

听说技术文章和 DEMO 更配噢~
git clone https://github.com/JasonKid/fezone.git 搜索 Margin Collapsing

「CSS」Margin Collapsing - 外边距合并相关推荐

  1. 【温故知新】CSS学习笔记(外边距合并)

    CSS外边距合并 外边距合并 使用margin定义块元素的垂直外边距时,可能会出现外边距的合并. 一.相邻块元素垂直外边距的合并 当上下相邻的两个块元素相遇的时候,如果上面的元素有下外边距margin ...

  2. margin外边距合并的问题

    原文地址: https://my.oschina.net/huskydog/blog/749629 在我初学css的时候,关于css盒模型的外边距合并问题,迷惑了我很久.在写demo的时候,我只是尽量 ...

  3. 030_CSS外边距合并

    1. 外边距合并指的是, 当两个垂直外边距相遇时, 它们将形成一个外边距. 2. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 3. 外边距合并 3.1. 外边距合并(叠加)是一个相 ...

  4. Collapsing margins(外边距合并)

    开篇 块元素的上边距或下边距有时会合并为一个margin,这种情况称之为外边距的合并,即collapsing margins. 一个常见的css样式的bug html&css: <!DO ...

  5. 5、CSS 外边距合并

    外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 1.外边距合并 外边距合并(叠加)是一个相当简单的概念.但是,在实践中 ...

  6. 前端:CSS/13/HTML引入CSS的方法,CSS表格属性,盒子模型,上下外边距合并

    HTML引入CSS的方法 1,嵌入式 通过<style>标记,来引入CSS样式: 语法格式:<style type="text/css"></styl ...

  7. CSS外边距合并和CSS清除浮动

    外边距合并 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 外边距合并(叠加)是一个相当简单的概念.但是,在实践中对网页 ...

  8. margin外边距合并问题以及解决方式

    margin外边距合并问题以及解决方式汇总 简介 块级元素的上外边距和下外边距有时会合并(或折叠)为一个外边距,其大小取其中的最大者,这种行为称为外边距折叠(margin collapsing). 外 ...

  9. CSS外边距合并问题以及方法

    外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 只有普通文档流中块框的垂直外边距才会发生外边距合并.行内框.浮动框或绝 ...

最新文章

  1. 线程池的原理及实现(转)
  2. 实例讲解如何把表格变量传递到存储过程中
  3. Collection接口详解
  4. css入门教程资料(5)
  5. python实现oa系统_技术讨论 | 利用Python程序实现某OA系统的自动定位
  6. sql 不等于符号_SQL 必备知识 - 第一弹
  7. python实现ai聊天机器人_AI人工智能Python实现简单人机对话:你好,人类!
  8. 异常检测2——PCA异常检测
  9. 2020身高体重标准表儿童_2019年0~12岁儿童身高体重标准表出炉了,你家娃达标没...
  10. QTP自动化测试-点滴-步骤
  11. 用python导出pptx中每一页的标题
  12. 【原创】Linux 菜鸟入门记录 常用命令 常用软件
  13. element ui html编辑器,vue+element-ui 使用富文本编辑器
  14. GSM、UMTS和LTE网络;FDD,TDD双工模式
  15. 十四、反射(高琪java300集+java从入门到精通笔记)
  16. 【分布式训练-Ring AllReduce】
  17. gpedit.msc打不开
  18. 【数据结构(C语言描述)】环形队列
  19. 2023届暑期实习京东物流一面
  20. 收支记录用这个记账本就够了

热门文章

  1. Ubuntu报错E:Package vim has no installation candidate
  2. python运行没有图_python – 运行没有图形的Salome脚本
  3. 爬虫技术罪与罚:失衡的催收应用边界
  4. java酒店入住管理系统代码_基于jsp的酒店入住管理系统-JavaEE实现酒店入住管理系统 - java项目源码...
  5. Door Man poj 1300
  6. javascript +
  7. Word处理控件Aspose.Words功能演示:使用 Java 为 Word 文档添加水印
  8. 淘宝装修设计外包网站建设-纳米网络科技
  9. CAD二次开发---python中pyautocad怎么打开文件不提示对话框?
  10. 基于JavaWeb+Mysql的网上销售管理系统