清除浮动影响的几种方法

3 篇文章 0 订阅

今天分享的是清除浮动的几种方法,当我们在布局的时候,图如下:
在这里插入图片描述
而我们想实现的是(1)里头的元素还在框里但是保持一行,(2)框的高度跟随里头最高的元素。

我知道有很多方式可以做,但今天我们要讲的是和浮动有关,所以只用float来说。

我们都知道只要father不设置高,它会随着里头元素的大小来撑开盒子。(我相信还没有人不知道把?不知道也没事,你现在知道了嘿嘿嘿)

实现之前代码如下:

.father{
	border: 1px solid orange;
	width: 700px;
}
.son1{
	width: 100px;
	height: 50px;
	background-color: silver;
}
.son2{
	width: 200px;
	height: 100px;
	background-color: yellow;
}	
<div class="father">
		<div class="son1"></div>
		<div class="son2"></div>
</div>

而当我们在.son1和.son2里头添加float:left之后反而变成:
在这里插入图片描述
这呢是因为咱们的father没有设置高度,只设置了边界,而里头的元素都设置了float浮动,浮在father的上方,father里头没有元素所以没法撑开了。这与我们的初衷不符合,所以我们要清除浮动所带来的影响。
以下是方法介绍:
一.额外标签法:
在最后一个设置浮动元素下面添加一个空的标签

<div class="father">
	<div class="son1"></div>
	<div class="son2"></div>
	<div class="clearfix"></div>
</div>
.clearfix{
	clear: both;
}

在这里插入图片描述
完美实现我们两个想法。之前有人说直接设置father高度和里面最高的一致不就行,可这是里头元素少啊 若是多的话或者临时添加son那不就是得改好多?是吧。
这个方法可以解决但也不太建议用,因为容易添加无意义标签

二.overflow:
给father添加overflow:hidden 实现效果和上面一样

.father{
			border: 1px solid orange;
			width: 700px;
			overflow: hidden;
}

三.after伪元素:

		.father{
			border: 1px solid orange;
			width: 700px;
		}
		.clearfix:after{ /*正常浏览器清除*/
			content: "";
			display: block;
			height: 0;
			clear: both;
			visibility: hidden;
		}
		.clearfix{  /*ie浏览器清除*/
			*zoom:1;
		}
<div class="father clearfix">
<!--省略两个son -->
</div>

:after 的意思是在father内部的最后加入内容。
display:block,使伪元素能显示出来,但内容为空的东西就不会有东西显示在页面上让人看见。所以, content:"";
为使伪元素不影响页面布局,让height:0,
紧接着清除浮动:clear:both,
允许浏览器渲染它但要隐藏, hidden: 设置对象隐藏 ,这样才能实现清除浮动。visibility: hidden;
CSS参考手册visibility:设置或检索是否显示对象。与display属性不同,此属性为隐藏的对象保留其占据的物理空间

四.双伪元素: :after :before

.clearfix:after,.clearfix:before{ /*正常浏览器清除*/
			content: "";
			display: table;
			/*table: 指定对象作为块元素级的表格。
			类同于html标签<table>*/
		}
		.clearfix:after{
			clear: both;
		}
		.clearfix{  /*ie浏览器清除*/
			*zoom:1;
		}

我自己的理解是因为在father内部的前后面都加了内容为空的东西,所以display用了table,其实block也可以。如果有朋友们这块地方能懂的话,欢迎和我说一下共同进步。

有错误和建议欢迎表示,万分感激。
此至 互勉!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值