CSS 外边距(margin)重叠及防止方法

边界重叠是指两个或多个盒子(可能相邻也可能嵌套)的相邻边界(其间没有任何非空内容、补白、边框)重合在一起而形成一个单一边界。

两个或多个块级盒子的垂直相邻边界会重合。结果的边界宽度是相邻边界宽度中最大的值。如果出现负边界,则在最大的正边界中减去绝对值最大的负边界。如果没有正边界,则从零中减去绝对值最大的负边界。注意:相邻的盒子可能并非是由父子关系或同胞关系的元素生成。
但是边界的重叠也有例外情况:

1、水平边距永远不会重合。
2、在规范文档中,2个或以上的块级盒模型相邻的垂直margin会重叠。最终的margin值计算方法如下:
a、全部都为正值,取最大者;
b、不全是正值,则都取绝对值,然后用正值减去最大值;
c、没有正值,则都取绝对值,然后用0减去最大值。
注意:相邻的盒模型可能由DOM元素动态产生并没有相邻或继承关系。
3、相邻的盒模型中,如果其中的一个是浮动的(float),垂直margin不会重叠,并且浮动的盒模型和它的子元素之间也是这样。
4、设置了overflow属性的元素和它的子元素之间的margin不被重叠(overflow取值为visible除外)。
5、设置了绝对定位(position:absolute)的盒模型,垂直margin不会被重叠,并且和他们的子元素之间也是一样。
6、设置了display:inline-block的元素,垂直margin不会重叠,甚至和他们的子元素之间也是一样。
7、如果一个盒模型的上下margin相邻,这时它的margin可能重叠覆盖(collapse through)它。在这种情况下,元素的位置(position)取决于它的相邻元素的margin是否重叠。
a、如果元素的margin和它的父元素的margin-top重叠在一起,盒模型border-top的边界定义和它的父元素相同。
b、另外,任意元素的父元素不参与margin的重叠,或者说只有父元素的margin-bottom是参与计算的。如果元素的border-top非零,那么元素的border-top边界位置和原来一样。
一个应用了清除操作的元素的margin-top绝不会和它的块级父元素的margin-bottom重叠。
注意,那些已经被重叠覆盖的元素的位置对其他已经重叠的元素的位置没有任何影响;只有在对这些元素的子元素定位时,border-top边界位置才是必需的。
8、根元素的垂直margin不会被重叠。

外边距(margin)重叠示例
外边距重叠是指两个垂直相邻的块级元素,当上下两个边距相遇时,起外边距会产生重叠现象,且重叠后的外边距,等于其中较大者。
图示:

另一个重叠现象是当一个元素包含在另一个元素之中时,子元素与父元素之间也会产生重叠现象,重叠后的外边距,等于其中最大者:

同理,如果一个无内容的空元素,其自身上下边距也会产生重叠。

外边距重叠的意义

外边距的重叠只产生在普通流文档的上下外边距之间,这个看起来有点奇怪的规则,其实有其现实意义。设想,当我们上下排列一系列规则的块级元素(如段落P)时,那么块元素之间因为外边距重叠的存在,段落之间就不会产生双倍的距离。

防止外边距重叠解决方案:
虽然外边距的重叠有其一定的意义,但有时候我们在设计上却不想让元素之间产生重叠,那么可以有如下几个建议可供参考:

  1. 外层元素padding代替
  2. 内层元素透明边框 border:1px solid transparent;
  3. 内层元素绝对定位 postion:absolute:
  4. 外层元素 overflow:hidden;
  5. 内层元素 加float:left;或display:inline-block;
  6. 内层元素padding:1px;

转载于:https://www.cnblogs.com/huancheng/p/8572016.html

如何解决外边距重叠问题相关推荐

  1. CSS解决高度塌缩问题和外边距重叠问题

    高度塌陷的问题 在浮动布局中,父元素默认是被子元素撑开的当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离将会无法撑起父元素的高度,导致父元素的高度丢失 父元素高度丢失后,其下的元素会自动上移, ...

  2. HTML-完美解决父子元素的外边距重叠和高度塌陷问题

    HTML-完美解决父子元素的外边距重叠和高度塌陷问题 参考文章: (1)HTML-完美解决父子元素的外边距重叠和高度塌陷问题 (2)https://www.cnblogs.com/hack-ing/p ...

  3. CSS 外边距重叠及防止方法

    外边距重叠及防止方法 外边距重叠 1.什么是外边距重叠 2.类型 3.意义 4.特殊情况 解决方法 外边距重叠 1.什么是外边距重叠 两个或多个块级盒子的垂直相邻边界会重合.结果的边界宽度是相邻边界宽 ...

  4. [css] 外边距重叠是什么?重叠的结果是什么?怎么防止外边距重叠?

    [css] 外边距重叠是什么?重叠的结果是什么?怎么防止外边距重叠? 外边距重叠是什么?外边距重叠指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 重叠后的外边距的高度等于两个发生重叠的外边距的 ...

  5. 解决外边距坍塌的几种方法

    本节目录 什么是 BFC 如何产生BFC? 外边距坍塌的三种情况及其解决方法 父子元素/margin越界 解决外边距坍塌的三个解决方法 同级相邻元素 解决方法之触发 BFC: 空块元素 解决方法之触发 ...

  6. 什么是外边距重叠?重叠的结果是什么?

    外边距重叠 边界重叠是指两个或多个盒子(可能相邻也可能嵌套)的相邻边界(其间没有任何非空内容.补白.边框)重合在一起而形成一个单一边界.两个或多个块级盒子的垂直相邻边界会重合. 外边距重叠的结果 结果 ...

  7. 详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)

    ⼀. overflow:hidden 溢出隐藏 给⼀个元素设置overflow: hidden,如果该元素中的内容超出了给定的宽度或⾼度,那么超出的部分将会被隐藏,不占位. <style typ ...

  8. 关于overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷等等)

    一. overflow:hidden  溢出隐藏 给一个元素中设置overflow:hidden,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位. /*css样式*/ ...

  9. css三个块元素重叠,CSS盒模型以及如何解决边距重叠问题

    1. 对于行内元素 margin-top/margin-bottom对于上下元素无效,margin-left/margin-right有效! 对于相邻的块级元素margin-top和margin-bo ...

最新文章

  1. 硬核科普:一文看懂人脸识别技术流程
  2. win7系统自带截图工具快捷键是什么?怎么设置快捷键
  3. Flink从入门到精通100篇(十三)-Flink的入门教学
  4. MICROSOFT IGNITE 2018 大会成功举办,Docker 现场揭秘全新版本内容!
  5. 问题:python3关于json文件多余一行后发生的错误
  6. 无废话WCF系列教程 -- 李林峰
  7. Java多线程(八)之Semaphore、CountDownLatch、CyclicBarrier、Exchanger
  8. jQuery hover()
  9. 黑科技之后迎来“小仙女”!小米官宣全新手机系列CC
  10. 视频服务器读取hdfs文件,基于HDFS的流媒体服务器Red5视频文件分发的研究与应用...
  11. 读《python核心编程2》笔记 1
  12. LeetCode 357. Count Numbers with Unique Digits
  13. java String.replaceAll中特殊字符问题
  14. 16.TCP/IP 详解卷1 --- BOOTP:引导程序协议
  15. licens 问题 Error (292028): Specified license is not valid for this machine
  16. H5动画实现简单的转盘抽奖。
  17. C语言平面向量加法运算,2.2.1 向量加法运算及其几何意义优质课一等奖
  18. FTL介绍 -- FTL映射
  19. 怎样找回u盘里误删的文件
  20. 三流鬼片--橘子红了

热门文章

  1. mailgun_使用Mailgun API简化应用程序中的电子邮件
  2. PNP问题学习笔记1
  3. Android 请求数据时,报错 HttpException:HTTP 503 Service Temporarily Unavailable”
  4. Oracle实现US7ASCII到ZHS16GBK数据迁移正常显示中文
  5. 修改数据库字符集为'us7ascii'
  6. adb查看手机设备型号、品牌、机型等信息
  7. Unity3d:UGUI,UI与特效粒子层级,2018.2以上版本BakeMesh,粒子在两个Image之间且在ScrollView
  8. insert into 语句的四种写法
  9. Bandizip6.27百度网盘
  10. 输入一个整数求其位数和各个位数之和