解决父元素因子元素设置浮动而产生的高度塌陷的四种方式

父元素高度塌陷的原因:在没有设置高度的父元素内,子元素全部设置浮动以后,子元素脱离文档流,不在占有文档流的位置,因此父元素高度塌陷,对后面的元素排版将产生影响。
方式一:额外标签法
在父元素的后面添加一个空的块元素标签,并对这个空的块元素标签清除对他影响最大浮动。但是这种方法增加了无用的标签并且与结构与样式相分离的宗旨相违背。
完整代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>额外标签法</title>
		<style type="text/css">
			.father{
				border: 2px solid red;
			}
			.son{
				width: 200px;
				height: 200px;
				background-color: skyblue;
				float: left;
			}
			.clear{
				clear: both;
			}
		</style>
	</head>
	<body>
		<div class="father">
			<div class="son"></div>
			<div class="clear"></div>
		</div>
	</body>
</html>

方法二:给父元素添加overflow属性,属性值设置为hidden、auto或者scroll。
方法二书写方便,并且结构与表现也实现了分离。但是父元素中多处的内容将会hidden,给布局造成非常大的影响。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>overflow</title>
		<style type="text/css">
			.father{
				border: 2px solid red;
				/* 给父元素设置overflow属性值为hidden、auto或者scroll便可以了。 */
				overflow: hidden;
			}
			.son{
				width: 200px;
				height: 200px;
				background-color: skyblue;
				float: left;
			}
		</style>
	</head>
	<body>
		<div class="father">
			<div class="son"></div>
		</div>
	</body>
</html>

方法三: :after伪元素法
方法三是额外标签发的升级版,只需要给父元素设置如下代码就可以了,并且要考虑到兼容ie6.核心思想并没有什么区别。但方法三完美的是想了结构与表现分离,是开发中最常用的方式。
关键代码如下:

.clearfix::after{
				content: '';
				display: block;
				height: 0;
				clear: both;
				visibility: hidden;
			}
			.clearfix{
				/* 兼容ie6 */
				*zoom: 1;
			}

方法四:双伪元素清除浮动
与方法三一样也是对父元素添加css代码。
关键代码如下所示:

.clearfix::after,clearfix::before{
				content: '';
				display: table;
			}
			.clearfix::after{
				clear: both;
			}
			.clearfix{
				/* 兼容ie6 */
				*zoom: 1;
			}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值