清除浮动

时间:2009年03月26日作者:愚人码头查看次数:1,914 views评论次数:1

今天说说清除浮动,clear float。

常规清除浮动,只要在需要清除的那个元素加上clear:left、clear:right或者clear:both

但是有两个情况下,靠以上这种简单处理不行。

第一种情况,父元素有border或者background等视觉体现,而子元素都是float元素的时候,需要对子元素结束的时候对float做清理,否则视觉显示不出来。第二种情况,也是基于视觉的考虑,第一个元素的子元素做了一些浮动,紧接着的第二个元素有border要显示,但是如果直接在自己身上加clear,会导致第一个元素的padding-bottom后者本身的margin-top失灵,而因为要显示border,不好用padding-top来控制与第一个元素的间距。这些时候可以用这个经典的清除浮动class加在父元素上来清除自身的浮动:

.clearfix:after {
content: ".";
display: block;
height: 0;
font-size: 0;
clear: both;
visibility: hidden;
}
.clearfix {zoom:1;}

第一种情况的示例看下图:

2008-06-21_005625.png

第二种情况的示例看下图:

2008-06-21_010030.png

你可以访问口碑网首页使用firebug展开dom节点找到相应的位置看。

原版(网上搜索clearfix到处都是)对IE/MAC提供了支持,并且用height:1%对IE进行hack。我对那部分做了修改,用了zoom:1来取代。

另外最近不小心看到网上一个新方法,这样子也行…

.clearfix {
overflow:auto;
zoom:1;
}

声明: 本文采用 BY-NC-SA 协议进行授权 | WEB前端开发
转载请注明转自《清除浮动

如果你读了我的文章,觉得有帮助: 说明
分类:html+css
1条评论
  1. 小松留言于:2011年03月21日16:52

    个人觉得overflow:auto;要慎用~

    [回复]

发表评论

*

*