解决子元素设置margin-top使父元素也跟着向下移动的问题

先看代码:



	
		
		
		
		解决子元素设置margin-top使父元素也跟着向下移动的问题
		
	
	
		
这是子元素的内容

以为的运行效果:

解决子元素设置margin-top使父元素也跟着向下移动的问题_第1张图片

实际上的运行效果:

解决子元素设置margin-top使父元素也跟着向下移动的问题_第2张图片 

子元素设置margin-top,父元素也跟着下移,造成外边距塌陷。

 原理:

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

解决办法:

1、给父元素设置padding-top

.parent {
	background-color: skyblue;
	width: 100%;
	height: 100%;
	box-sizing: border-box;
    padding-top: 1px;
}

2、为父元素设置border

.parent {
	background-color: skyblue;
	width: 100%;
	height: 100%;
	box-sizing: border-box;
	border: 1px solid transparent;
}

3、为父元素设置overflow: hidden;(推荐使用这种)

.parent {
	background-color: skyblue;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

 4、为父元素设置浮动

.parent {
	background-color: skyblue;
	width: 100%;
	height: 100%;
	float: left;
}

5、为子元素设置浮动

.child {
	width: 50%;
	height: 50%;
	margin-top: 50px;
	background-color: pink;
	float: left;
}

6、为父元素设置绝对定位

.parent {
	background-color: skyblue;
	width: 100%;
	height: 100%;
	position: absolute;
}

7、为子元素设置绝对定位

.child {
	width: 50%;
	height: 50%;
	margin-top: 50px;
	background-color: pink;
	position: absolute;
}

你可能感兴趣的:(css,HTML,前端)