问题描述
常见的需要清除浮动的情形是:
当内层div是浮动的,外层div就不会被内层div的高度撑开。如下图:
解决方法
- 添加清除浮动标签
- 使用after伪类
- 浮动外部元素
- 设置overflow为hidden或者auto
添加清除浮动标签
使用after伪类
当然这种方法不使用与ie,所以要使用适当的hack,针对在ie6上的浮动清理:
浮动外部元素
这种方法很简单,就是吧outer也加上浮动。
设置overflow为hidden或者auto
把outer的overflow属性设置为hidden或者是auto。
几种方法的比较
- 不推荐使用after的方法,因为要使用hack,代码相对晦涩,对代码有洁癖的人可以使用。
- 使用overflow方法,可能会对页面表现带来影响,要经过细致的测试。
- 额外标签的方法是w3c推荐的方法,个人也经常使用,对页面影响小,而且简单,明了。
- float-in-float的方法和overflow一样,都是会对页面其他元素的表现产生未知影响,使用的环境相对狭窄。