清除浮动的各种方法

一、浮动的定义及效果

        网页开发写CSS时常见的就是浮动,那浮动的定义是什么呢,一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。也就是说浮动元素会脱离文档流并尽量向左/向右浮动,直到碰到它的父元素或者另一个浮动元素。浮动后的元素会有以下的效果:

  1. 浮动会脱离文档流,尽量向左或向右移动,后面的元素会随文档流补上。
  2. 浮动可以实现多个块级元素分布在一行的布局,既像内联元素一样呈现出来,又可以设置宽高;
  3. 由于浮动会使元素脱离文档,所以其父元素高度为0,也就是高度坍塌。

二、清除浮动的方法

由于浮动会像上面所说的,影响到浮动元素的父元素和后面的元素,那就需要清除浮动来解决这些问题。

方法一:设置父元素的高度

计算包含浮动子元素的父元素高度,直接解决高度坍塌的问题。

方法二:设置额外的空元素

在包含浮动元素后面,增加额外的空元素,设置 clear: both ,clear属性的值也可以是left, right。

但是这种做法会添加无意义的元素不利于维护。

//css
.parent{
	border: 1px solid #f00;
}
.child{
        float: left;
	width: 50px;
	height: 50px;
	margin: 5px;
	border: 1px solid #00f;
}
.clear{
	clear: both;
}
//html
<div class="parent">
	<div class="child"></div>
	<div class="child"></div>
	<div class="child"></div>
	<div class="clear"></div>
</div>

方法三:使用:after选择器

在包含浮动子元素的父元素上使用 :after 选择器生成内容清除浮动。

//css
.parent{
	border: 1px solid #f00;
}
.child{  
        float: left;
	width: 50px;
	height: 50px;
	margin: 5px;
	border: 1px solid #00f;
}
.clearfix:after{
	content:"";
	display:block;
	clear:both;
}
.clearfix{
	zoom:1;
}/*兼容IE*/
//html
<div class="parent clearfix">
	<div class="child"></div>
	<div class="child"></div>
	<div class="child"></div>
</div>
方法四:利用overflow: hidden

这种方法使得父元素包裹住子元素,解决了高度坍塌问题,但是溢出的内容会被隐藏。

//css
.parent{
	border: 1px solid #f00;
        overflow: hidden;
}
.child{  
        float: left;
	width: 50px;
	height: 50px;
	margin: 5px;
	border: 1px solid #00f;
}
//html
<div class="parent">
	<div class="child"></div>
	<div class="child"></div>
	<div class="child"></div>
</div>

方法五:浮动父元素

给父元素增加 float属性,而不用去清除子元素的浮动。但是产生了新的浮动,对后面元素会有影响。

方法六:设置父元素display: table

直接改变了盒模型的属性,可能产生未知问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值