day2-清除浮动的四种方式

133 阅读1分钟

一般来说,父元素的高度由内容撑起。如果内容设置了浮动,其会脱离文档流,导致父元素高度塌陷。

问题描述:

<head>
	<meta charset="utf-8">
	<title></title>
	<style>
		.father {
			border: 3px dashed black;
		}
		
		.red {
			width: 100px;
			height: 100px;
			background-color: red;
		}
		
		.green {
			width: 50px;
			height: 50px;
			background-color: green;
		}
	</style>
</head>
<body>
	<div class="father">
		<div class="red"></div>
		<div class="green"></div>
	</div>
</body>

此时,父元素高度由红、绿两个块级元素撑起:

微信截图_20221020230322.png

.red {
	width: 100px;
	height: 100px;
	background-color: red;
	float: left; /* 设置浮动 */
}

.green {
	width: 50px;
	height: 50px;
	background-color: green;
	float: left; /* 设置浮动 */
}

给红、绿子元素设置浮动,结果导致父元素高度塌陷:

微信截图_20221020230640.png

解决办法:

1.父元素内增加额外标签,用clear: both;来清除前面元素的浮动。

<div class="father">
	<div class="red"></div>
	<div class="green"></div>
	<div style="clear: both;"></div> /* 新增元素 */
</div>

微信截图_20221020231630.png

2.父元素设置overflow: hidden;属性

.father {
	border: 3px dashed black;
	overflow: hidden;
}

微信截图_20221020231630.png

3.单伪元素方法

这个方法类似方法一,用到伪类:after相当于我们自己在父元素内创造一个块级元素。

.clearfix:after {
	content: "";
	display: block;
	clear: both;
}

微信截图_20221020231630.png

4.双伪元素法(此方法较稳妥、全面,推荐使用)

.clearfix:after,
.clearfix:before {
	content: "";
	display: table;
}

.clearfix:after {
	clear: both;
}

微信截图_20221020231630.png

以上为清除浮动、解决父元素塌陷的四种方法。才疏学浅,哪里有缺漏还请各位大佬指教。