CSS 使用浮动会造成布局的混乱,通常清除浮动的方法是,利用一个如下样式的空 Div:
<div class="clear"></div>
.clear{clear:both;}
更为优良的 CSS 代码是:
.clear:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
.clear{zoom:1;}
这个方法目前已经广泛使用,淘宝、口碑,都是这种用法。通过 after 伪类 :after 和 针对 IE6 的独立 CSS Hack 来实现,完全兼容主流浏览器。
当然,这在通过 CSS 在元素之后追加 “.” 并不必要,因为还需要 visibility 来隐藏掉它。通过优化,代码如下:
.clear:after{content:"\20";display:block;height:0;clear:both;}
.clear{zoom:1;}
其中,\20 指在容器后添加空格,这样就避免使用 visibility 隐藏可视性了。
另外,芒果不推荐使用空 div 的方法。单单为了清除浮动而在结构良好的 HTML 中插入没有语义的容器,未免有些突兀。
版权所有,转载请注明出处。
转载自 <a href="http://www.mangguo.org/mangguo-teach-you-clear-float/" title="芒果教你清除浮动" rel="bookmark">芒果教你清除浮动 | 芒果</a>

已经有 7 条评论
- 易搜购 - 2010-03-06 22:13
#1clear:both; 这个经常用,还没有碰到过特殊的问题。 回应
- zhouqi - 2010-03-28 22:25
#2020 算是什么编码? 回应
- zhouqi - 2010-03-28 22:32
#3我试了下~content:”"也行~ 回应
- 芒果 对 说 - 2010-03-29 17:18
#4写错了,应该是 content:”\20″ 回应
- lily - 2010-04-22 14:49
#5写的很好,不知道其它人是怎么写的,我经常使用 .clear{ overflow:hidden; zoom:1;} 来清除浮动,代码简洁,而且兼容各个浏览器,虽然说,因为 overflow:hidden 有一些局限性,而且不能通过 W3C 验证,但我觉得利大于弊,可取。向博主学习了!!!! 回应
- luochong - 2010-07-28 12:30
#6after 伪类 ie6、7 支持吗? 如果不支持针对 ie 怎么写? 回应
- 芒果 对 说 - 2010-07-28 18:35
#7IE6 和 IE7 都不支持 :after 这个伪类。 回应
我简单说几句