您的位置:首页 > Web前端 > CSS

【HTML】- CSS清除浮动

2017-06-25 17:07 441 查看
我们通常使用浮动来实现某些元素的布局,但是往往这些元素浮动会影响其他元素的布局,因此会产生副作用。

当元素设置浮动属性后,会对相邻的元素产生影响,相邻的元素特指紧邻其后面的元素。

1.浮动产生的原因:

一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了。

实例:

<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
<div>浮动元素后的元素</div>

<style>
.box{
border: 1px solid red;
}
.left{
float: left;
width: 100px;
height:300px;
border: 1px solid dodgerblue;
margin: 5px;
}
.right{
float: right;
width: 100px;
height:300px;
margin: 5px;
border: 1px solid forestgreen;
}
</style>
效果:
原理上里面的两个对象盒子是在红色对象盒子中的,因为里面的两个盒子使用了float浮动布局,导致外面的红字盒子对象不能被撑开。

2.浮动产生的副作用

2.1 背景不能显示
由于浮动产生,如果对父级设置了(CSS background背景)CSS背景颜色或CSS背景图片,而父级不能被撑开,所以导致CSS背景不能
显示。
2.2 边框不能撑开
如上图中,如果父级设置了CSS边框属性(css border),由于子级里使用了float属性,产生浮动,父级不能被撑开,导致边框不能
随内容而被撑开。
2.3 margin padding设置值不能正确显示
由于浮动导致父级子级之间设置了css padding、css margin属性的值不能正确表达。特别是上下边的padding和margin不能正确显示。
2.4 使浮动元素紧邻其后的元素表现的如同设置了浮动元素一样,不再换行显示,而是显示在同一行中。

3.消除浮动的方法

3.1 设置父级元素一个固定的高度

上面的父级元素样式设置

.box{
border: 1px solid red;
height: 400px;
}


3.2 clear:both清除浮动

在父级“</div>”结束前加此div引入“class="clear"”样式。这样即可清除浮动。

.box:after{
content: '';
height: 0px;
visibility: hidden;
clear: both;
display: block;
}


3.3 父级元素设置overflow:hidden清除浮动

.box{
border: 1px solid red;
overflow: hidden;
}
为什么加入overflow:hidden即可清除浮动呢?那是因为overflow:hidden属性相当于是让父级紧贴内容,
这样即可紧贴其对象内内容(包括使用float的div盒子),从而实现了清除浮动。


清除浮动的效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: