【CSS】margin塌陷和margin合并及其解决方案

【CSS】margin塌陷和margin合并及其解决方案

一、解决margin塌陷的问题

问题当父元素包裹着一个子元素且父元素没有边框的时候,当给子元素设置margin-top:100px,此时不应该看到的是子元素距离父元素顶部100px嘛?为什么是父元素距离body100px?
原因父元素与子元素之间且父元素没有边框,给子元素添加margin-top属性时,此时只是想让子元素的边框距离父元素边框有一段距离,而却出现了父元素的顶端距离body这个边框出现了位移,这就是margin-top塌陷的现象。

	.container{
   
		height: 300px;
		width: 300px;
		background-color: blue;
		/* overflow: hidden; */
	}
	.box {
   
		background: red;
		height: 100px;
		width: 100px;
		margin-top: 50px;
	}
	<div class="container">
		<div class="box">
		</div>
	</div>

在这里插入图片描述

解决方案:给父元素添加overflow:hidden触发BFC;

	.container{
   
		height: 300px;
		width: 300px;
		background-color: blue;
	    overflow: hidden; 
	}

在这里插入图片描述

二、避免外边距margin重叠(margin合并)

问题:两个兄弟块元素,一个设置下外边距100px,一个设置上外边距100px,此时它们不应该是相距200px才对嘛?为什么只相距了100px?
原因兄弟之间的元素,垂直方向的margin-bottom和margin-top会合并为单个边距,其大小为单个边距的最大值,如果值一样则值仅为其中一个。这就是外边距重叠现象。

	.box {
   
		background: red;
		height: 100px;
		width: 100px;
	}
	<div class="box" style="margin-bottom: 100px;">
	</div>
	<div class="box" style="margin-top: 100px;">
	</div>

在这里插入图片描述
解决办法每个元素放置不同的BFC中,通过overflow: hidden;触发BFC

	.container {
   
		overflow: hidden;
	}
	.box {
   
		background: red;
		height: 100px;
		width: 100px;
	}
	<div class="container">
		<div class="box" style="margin-bottom: 100px;">
		</div>
	</div>
	<div class="container">
		<div class="box" style="margin-top: 100px;">
		</div>
	</div>

在这里插入图片描述

相关推荐

  1. Android Room数据库升级Margen解决方案

    2024-02-09 06:14:02       38 阅读
  2. CSS中浮动float带来的高度塌陷问题及4种解决方案

    2024-02-09 06:14:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-09 06:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-09 06:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-09 06:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-09 06:14:02       18 阅读

热门阅读

  1. 力扣738单调递增的数字思路以及贪心总结

    2024-02-09 06:14:02       37 阅读
  2. 【正则表达式的妙用】

    2024-02-09 06:14:02       33 阅读
  3. Nginx+React在Docker中实现项目部署

    2024-02-09 06:14:02       36 阅读
  4. 常用的文件系统、存储类型小整理

    2024-02-09 06:14:02       31 阅读
  5. C#面:什么是Code-Behind技术

    2024-02-09 06:14:02       28 阅读
  6. PostgreSQL 与 MySQL 相比,优势何在?

    2024-02-09 06:14:02       36 阅读
  7. ASP.NET Core 7 MVC 使用 Ajax 和控制器通信

    2024-02-09 06:14:02       33 阅读
  8. C语言如何控制输出⻓度?

    2024-02-09 06:14:02       33 阅读