css之margin塌陷和margin合并问题

margin塌陷:垂直方向上的margin父子元素会结合在一起,会取其中最大值。

实例

html代码

<!DOCTYPE html>
<html lang="en">
<head>
	<meter charset="utf-8">
	<title>margin</title> 
	<link rel="stylesheet" type="text/css" href="lesson3.css">
</head>
<body>
		<div class="wrapper">
		<div class="content"></div>
	</div>
</body>
</html>

css代码

*{
	margin: 0;
	padding: 0;
}
.wrapper{
	margin-left: 100px;
	margin-top: 100px;
	width: 100px;
	height: 100px;
	background-color: black;
	/*border-top: 1px solid red;*/
	/*overflow:hidden;*/
	/*position:absolute;*/
	/*display:inline-block;*/
	/*float:left/right;*/

}
.content{
	margin-left: 50px;
	/*margin-top: 50px;*/
	width: 50px;
	height: 50px;
	background-color: green;
}

未给子元素设置垂直方向上的margin时效果(为了便于观察给body加上背景颜色)

给子元素设置垂直方向上的margin时效果(并没有出现任何变化,此时垂直方向上的margin取父子元素中的最大值,当子级的值大于父级会带着父级一起移动。这种现象叫做margin塌陷)

子级设置margin-top:50px;时,不是子级距离父级上边框50像素。而是子级和父级距离文本标签50个像素

margin塌陷问题无法解决只能弥补,弥补margin塌陷要用到BFC (Block formatting context) “块级格式化上下文

如何触发一个盒子的bfc
   1. position:absolute;
   2. display:inline-block;
   3. float:left/right;
   4. overflow:hidden; // 溢出部分隐藏 

要弥补margin塌陷只需要给父级元素加上四种中任意一种即可

效果

margin合并:当两个上下位置关系的div元素,在通过margin-top、margin-bottom改变间距时,如果属性的值相同,则两容器间的距离就是这个值;如果两个属性的值不同,则取较大值作为两容器间的距离。

解决方法:

1.给两个div元素加一个父级元素,再使用bfc进行解决

2.直接给其中一个多设置像素即可,即如果想间距为300,直接给第一个设置300

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值