清除浮动

为什么要清除浮动?
在前端网页布局的时候,为了使元素居左或者居右常常需要用到浮动float属性,浮动的框可以左右移动直到碰到外边缘框或者遇到另一个浮动框。浮动框会脱离文档流,浮动框内的元素布局不会受影响,但是当子元素设置了float而父元素没有其他正常文档流中的元素的时候,父元素的宽高会变为0,子元素将支撑不了父元素,而正常文档流中的元素布局就会表现得浮动宽不存在一样,这种情况就是“高度塌陷”。

不设置浮动:

<div class="contain">
        <div class="box1"></div>
        <div class="box2"></div>
</div>
<div class="box3"></div>


.contain {
	background-color: black;
}
.box1 {
	width: 100px;
	height: 100px;
	background-color: red;
}
.box2 {
	width: 100px;
	height: 100px;
	background-color: green;
}
.box3 {
	width: 100px;
	height: 100px;
	background-color: yellow;
}

其中容器contain虽然没有设置宽高,但是其子元素设置了宽高将父元素的宽高给撑起来了
其中容器contain虽然没有设置宽高,但是其子元素设置了宽高将父元素的宽高给撑起来了

容器中的子元素设置浮动

<div class="contain">
        <div class="box1"></div>
        <div class="box2"></div>
</div>
<div class="box3"></div>


.contain {
	background-color: black;
}
.box1 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: red;
}
.box2 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: green;
}
.box3 {
	width: 100px;
	height: 100px;
	background-color: yellow;
}

此时父元素容器因为子元素浮动脱离了文档流而失去了高度,正常文档流中的box3后面显示
此时父元素容器因为子元素浮动脱离了文档流而失去了高度,正常文档流中的box3后面显示

若将box3的宽度设置为600可以更加清除明白
高度塌陷
所以为了使布局正常显示,我们需要清除浮动使得父元素的高度能被撑起来,方法有以下几种:

1、添加空白div盒子属性clear:both

在父元素容器中添加空白的div盒子,并设置属性clear:both
clear属性:left / right / both 可以清除一侧或者两侧属性

<div class="contain">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="clear"></div>
 </div>
<div class="box3"></div>


.contain {
	background-color: black;
}
.box1 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: red;
}
.box2 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: green;
}
.clear {
	clear: both
}
.box3 {
	width: 300px;
	height: 100px;
	background-color: yellow;
}

在这里插入图片描述

2、添加空白盒子增加父元素的padding

通过设置padding给浮动元素留有一定空间使布局正常显示

<div class="contain">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="clear"></div>
</div>
<div class="box3"></div>


.contain {
	background-color: black;
	
}
.box1 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: red;
}
.box2 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: green;
}
.clear {
	padding-top: 100px;
}
.box3 {
	width: 300px;
	height: 100px;
	background-color: yellow;
}

在这里插入图片描述

3、给父级元素设置overflow:hidden

(利用BFC清除浮动)

<div class="contain">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="clear"></div>
</div>
<div class="box3"></div>


.contain {
	background-color: black;
	overflow:hidden
}
.box1 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: red;
}
.box2 {
	width: 100px;
	height: 100px;
	float: left;
	background-color: green;
}
.clear {
}
.box3 {
	width: 300px;
	height: 100px;
	background-color: yellow;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值