子元素的margin-top为什么会影响父元素?

1.当你为子元素设置margin-top的时候,你会发现什么呢?

<style>
	body {
		padding: 0;
		margin: 0;
	}

	.b {
		width: 200px;
		height: 200px;
		border: 1px solid red;
	}

	.a {
		background-color: forestgreen;
		height: 300px;
		width: 220px;
	}
</style>
<body>
	<div class="a">
		<div class="b"></div>
	</div>
</body>

在这里插入图片描述
为子元素添加margin-top

.b {
	width: 200px;
	height: 200px;
	border: 1px solid red;
	margin-top: 90px;
}

在这里插入图片描述
可发现,子元素影响到了父元素,第一个子元素的margin-top会顶开父元素。该情况发生在父元素与该子元素直接木有直接的其他元素。

2. 什么原因呢

所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。

一个盒子如果没有上补白(padding-top)和上边框(border-top),那么这个盒子的上边距会和其内部文档流中的第一个子元素的上边距重叠。

3.解决方法

给父元素设置
1-

overflow: hidden

2-

display: inline-block;或者float布局

3-

border: 1px solid transparent; 

4-

position: absolute
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值