
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止,且脱离文档流(所以会产生覆盖和有关清除浮动的问题,下面我会具体说道)
举个例子:

有图可得:
当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了框 2,使框 2 从视图中消失
如果把所有三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框
还有另外一种情况:

同样由图可得:
如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”
??【清除浮动】
??上面我们说道,元素浮动会脱离文档流,所以不占据空间。这时会产生两个问题
?? ①元素覆盖;②清除浮动
?? ??接下来具体讲下清除浮动:
??因为不占据空间,所以如果包含该浮动元素的父级没有定义宽高时,会产生一个问题。那就是父级元素为空,浏览器渲染的直观效果就是包含块没有包围浮动元素。或者叫高度塌陷,即浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮动后,父元素会发生高度塌陷)
知道浮动和为什么要清除浮动之后我们可以开始学习如何清除浮动了,这时候我们就需要用到清除浮动的属性clear清除浮动
【属性值】clear 属性的值可以是 left、right、both 或 none,它表示框的哪些边不应该挨着浮动框
为了实现这种效果,在被清理的元素的上外边距上添加足够的空间,从而实现效果
具体清楚浮动的方法主要以下几种:

1、添加空div法
??在浮动元素下方添加空div,并给该元素写css样式:?? ??
{clear:both;height:0;overflow:hidden;}
??2、方法:给浮动元素父级设置高度
我们知道了高度塌陷是应为给浮动元素的父级高度是自适应导致的,那么我们给它的设置适当的高度就可以解决这个问题了
缺点:在浮动元素高度不确定的时候不适用
??3、方法:以浮制浮(父级同时浮动)
何谓“以浮制浮”呢?就是让浮动元素的父级也浮动下一个元素会受到这个浮动元素的影响。为了解决这个问题,有些人选择对布局中的所有东西进行浮动,然后使用适当的有意义的元素(常常是站点的页脚)对这些浮动进行清理
缺点:需要给每个浮动元素父级添加浮动,浮动多了容易出现问题
??7、 br 清浮动
<div class="box">
<div class="top"></div>
<br clear="both" />
</div>
br 标签自带clear属性,将它设置成both其实和添加空div原理是一样的
缺点:不符合工作中:结构、样式、行为,三者分离的要求
??5、给父级添加overflow:hidden??
问题:需要配合 宽度 或者 zoom 兼容IE6 IE7;
overflow: hidden; *zoom: 1;
??6、万能清除法 after伪类 清浮动(现在主流方法,推荐使用)
:after{
content:".";
clear:both;
display:block;
height:0;
overflow:hidden;
visibility:hidden;
}
?? ??同时为了兼容 IE6,7 同样需要配合zoom使用例如:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-64736-1.html
兑来兑去的东西
土地谁说了算