CSS Margin塌陷(重叠)

1、什么是“ Margin塌陷(重叠) ”?

在标准文档流中,竖直方向(是竖直方向水平方向不会出现塌陷现象)的margin会出现叠加现象,即较大的margin会覆盖掉较小的margin,竖直方向的两个盒子中间只有一个较大的margin,这就是margin的塌陷现象。

2、Margin塌陷现象何时产生?

margin的塌陷现象分两种情况:1,兄弟关系的盒子 2 ,父子关系的盒子

注:两个盒子的垂直外边距完全接触才会触发

3、现象实例

(1)兄弟关系盒子垂直并列(少见)

两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。

两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。

两个外边距一正一负时,折叠结果是两者的相加的和。

step1:首先设置两个DIV,并为其制定宽高


step2:对box1我们为其设置margin-bottom:50px;

     对box2我们为其设置margin-top: 20px;


两盒子之间的距离仅是50px,两盒子之间的margin出现了重叠部分,故而我们可以得出:垂直之间塌陷的原则是以两盒子最大的外边距为准。

(2)父子关系盒子(常见)

step1:首先设置两个嵌套关系的DIV,并为其制定宽高

step2: 当为内层盒子添加margin-top:10px时,会出现


子盒子和父盒子之间并没出现期望的10px间隙而是父盒子与子盒子一起与页面顶端产生了10px间隙(即父级盒子往下塌陷了10px)

即无论给子元素设不设置margin-top值,其都不发生作用,都会作用于父元素身上

4、解决方法

(1)为父盒子设置border,为外层添加border后父子盒子就不是真正意义上的贴合;

(2)为父盒子设定padding值,抵消掉子元素设置margin值的方式;

(3)为父盒子添加overflow:hidden;

(4)为父盒子添加position:fixed;

(5)为父盒子添加 display:table;

(6)利用伪元素给子元素的前面添加一个空元素。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,839评论 1 92
  • 一 外部式css样式 (也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css...
    KunMitnic阅读 981评论 0 1
  • 一、标准盒模型和怪异模式盒模型 标准盒模型和怪异模式盒模型可以通过box-sizing来设置: 标准盒模型: bo...
    会有猫惹阅读 559评论 0 1
  • margin重叠 摘自css2.1规范中文版 CSS中,两个或者多个盒(可能但不一定是兄弟)的相邻的margin会...
    打铁大师阅读 7,167评论 0 9
  • (本章节故事灵感来自于念宝宝,过年给念宝宝买了动物科普书,姐姐说念宝宝在听到小动物濒临灭绝的时候眼含泪水。那时候就...
    vicky四小姐阅读 711评论 0 1