一、 在浮动元素后加一个空的元素
, 设置clear:both; 让父元素自动获取高度;
优点: 简单、代码少,浏览器支持好,不容易出现怪问题
缺点: 增加了空标签,会影响浏览器的解析速度
1 | <div> |
二、给设置浮动的元素的父级元素添加overflow CSS属性,属性设置为hidden或者auto1
2
3
4
5
6
7
8
9
10
11
12
13
14<!-----HTML代码---->
<div class='clear' >
<div class='fl'>左浮动</div>
<div class='fr'>右浮动</div>
</div>
/***********CSS代码***********/
.fl{float:left;}
.fr{float:right;}
.clear{
overflow:hidden;
zoom:1; /*兼容IE浏览器*/
}
/***.clear{overflow:auto;}****/
优点:代码少,容易上手,浏览器支持好
缺点:不能和position属性配合使用。同时使用position会出现以下情况:如果是使用hidden清除浮动,超出的部分会被隐藏;如果使用auto清除浮动,子元素的尺寸过大时会出现滚动条
三、使用为元素:after来清除浮动,如右边案例所示,表示在clear类的div元素后插入内容,并设置该内容的样式
1 | <div class='clear' > |
优点:浏览器支持好,不容易出现一些意想不到的问题,大型网站如新浪、网易等都有使用这个方法
缺点:代码较多,初学者相对其他方式不容易掌握
四、float-in-float,将父级元素和子元素都设置浮动,并在与父级元素同级的下一个相邻元素中设置clear:both;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<!-----HTML代码---->
<div class='clear' >
<div class='fl'>左浮动</div>
<div class='fr'>右浮动</div>
</div>
<div class='cnt'>content</div>
/***********CSS代码***********/
.fl{float:left;}
.fr{float:right;}
.clear{
float:left;
}
.cnt{
clear:both;
}
缺点:可能会出现新的浮动问题