magin塌陷现象:在垂直方向,父子关系两个盒子中margin大的覆盖margin小的,导致两个盒子有同一个margin.

<style>

.div1{
width: 100px;
height: 100px;
background-color: red;
margin-top: 50px;
}
.div2{
width: 50px;
height: 50px;
background-color: green;

margin-top:70px;

}
</style>
<body>

<div class="div1">
<div class="div2"></div>
</div>

</body>

正常情况下,父级元素应该相对浏览器进行定位,子级相对父级定位.

但由于margin的塌陷,父级相对浏览器定位.而子级没有相对父级定位,子级相对父级,就像坍塌了一样.

结果:本应该是子元素的margin-top=70px(子元素的margin是相对于父元素的),父元素的等于50px,但最后结果子元素和父元素的margin-top都为70px.

解决办法:

1.父元素加border,注意加border时一定要有solid(不管写不写颜色),没写solid仅仅有个border:1px,浏览器实际上是没渲染border的。(不建议使用)

2.父元素加padding(不建议使用)

3.改变bfc(块级格式上下文)

改变父级的渲染规则有以下四种方法,给父级盒子添加

(1)position:absolute/fixed

(2)display:inline-block;

(3)float:left/right

(4)overflow:hidden

这四种方法都能触发bfc,但是使用的时候都会带来不同的麻烦,具体使用中还需根据具体情况选择没有影响的来解决margin塌陷

bfc:

浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。

特殊情况:下面这种也形成了margin塌陷,父级是body,子级div2没有相对body定位,而是和body一起用一个margin.div1脱离了文档流,不会相对body定位,但div2得相对body定位。

出现这种情况的条件是body有一个div脱离了标准流。

<style>
.box1{
width: 50px;
height: 50px;
position: absolute;
/* float: left; */
background-color: black;

}
.box2{
width: 100px;
height: 100px;
background-color: gray;
margin-top: 100px;
}

</style>
<body>

<div class="box1"></div>
<div class="box2"></div>

</body>

解决办法:和上面同理,只是父级变成了body

转载于:https://www.cnblogs.com/shiyuzuxia/p/9729912.html

margin塌陷问题相关推荐

  1. 解决margin塌陷的问题_margin塌陷问题及解决

    margin塌陷现象:在垂直方向如果有两个元素的外边距有相遇,在浏览器中加载的真正的外边距不是两个间距的加和,而是两个边距中值比较大的,边距小的塌陷到了边距值大的值内部. 1. 同级元素塌陷:上面的元 ...

  2. margin塌陷与margin合并、浮动流

    一.margin 塌陷 父子嵌套元素,垂直方向的margin,父子会粘合在一起,取最大的值.子级不能根据父级定位,好像父级没有棚. 解决方案,触发bfc(block format context),使 ...

  3. 解决margin塌陷的问题_解决margin塌陷与margin合并(margin)清除浮动问题

    **1.margin塌陷** 问题:垂直方向的父子关系的盒子使用不当会产生margin塌陷.给子级设置margin-top时,他不会相对父级一起动,只有他的margin超过父级的margin时,才会生 ...

  4. 【HTML/CSS】margin塌陷和合并问题

    1 margin塌陷问题 1.1 示例 <!DOCTYPE html> <html lang="en"> <head><meta char ...

  5. 解决margin塌陷问题

    一:什么是margin塌陷 ? 在标准文档流中,竖直方向(左右方向的不会出现塌陷现象)的margin会出现叠加现象,即较大的margin会覆盖掉较小的margin,竖直方向的两个盒子中间只有一个较大的 ...

  6. CSS高度塌陷问题(float塌陷margin塌陷)

    目录 一.float塌陷 1.问题 2.代码示例 3.解决方法 1.每个盒子设定固定的width和height 2.给外部的父盒子也添加浮动 3.给父盒子添加overflow属性. 4.父盒子里最下方 ...

  7. margin设置规则与margin塌陷、合并

    ① margin 设置规则 margin 复合属性,可以设置一个值.两个值.三个值.四个值,规则如下: margin: 10px; /*设置 4 个方向的外边距*/ margin: 10px 20px ...

  8. margin塌陷和margin合并

    一.margin塌陷 父子嵌套元素垂直方向的 margin ,父子元素是结合在一起的,他们两个会取其中最 大的值 正常情况应该是父级相对于浏览器进行定位,子级应该相对于父级定位的 , 但是 margi ...

  9. 盒子塌陷 和 margin塌陷

    1,盒子塌陷 产生的原因:当父元素没设置足够大小的时候,而子元素设置了浮动的属性,子元素就会跳出父元素的边界(脱离文档流),尤其是当父元素的高度为auto时,而父元素中又没有其它非浮动的可见元素时,父 ...

最新文章

  1. STL set容器的一点总结
  2. python 公众号爬虫_python_爬虫_微信公众号抓取
  3. 利用PUT方式上传文件的方法研究
  4. struts过滤器和拦截器的区别
  5. 靠手速!华为新旗舰今晚发布:价格破万
  6. WordPress 客户端软件列表
  7. 苹果和FBI出庭日期延后
  8. JAVA GUI设计
  9. 生物物种数据库_一个半机械人的物种
  10. 自媒体免费素材,国旗高清无水印素材,PNG格式,直接引用即可
  11. 移动应用设计领域中最拔尖的15大应用
  12. 【Python ASCII码转换】——制作ASCII码转换程序,并打包为应用程序
  13. matlab 普通数值计算,数值计算方法(MATLAB版)
  14. Python制作黑客工具,发现了同学U盘里见不得人的秘密
  15. 四级网络工程师笔记-计算机网络(下)
  16. Excel之DateDif函数
  17. 重启osd服务失败:Start request repeated too quickly
  18. opencv物体识别-识别水果
  19. iOS 字体类型列表
  20. autocad2014 转pdf并保存多页

热门文章

  1. 谷歌也被逼出局域网了 baidu从此天下无敌
  2. Shiro和SpringBoot简单集成
  3. 搜狗词库爬虫(2):基础爬虫框架的运行流程
  4. NVelocity的宏使用
  5. centos7配置haproxy
  6. 移动端ios滚动卡顿问题
  7. 用C#+XMI技术进行UML模型捕获
  8. 有幸见到一朵花的绽放
  9. Silverlight RIA Servcie 删除子对象实体提交错误的问题[解决]
  10. 从Zygote孵化frameworks进程,分析StartActivity流程中intent传递数据的最大值。