2010-07-12 65 views
6

/*清除修复*/哪种clearfix方法?

.clearfix:after {content: ".";display:block;height:0;clear:both;visibility:hidden;} 
* html .clearfix {height:1%;} 

.clearfix:after {content: ".";display:block;height:0;clear:both;visibility:hidden;} 
* html .clearfix, *:first-child+html .clearfix {zoom:1;} 

这将最好的工作? 我用第一个到现在,从来没有一个问题.. 感谢。

+1

我认为你做的第二个错误>在我的经验,你必须把IE6和IE7在单独的行语句破解,否则将无法正常工作 – Knu 2010-07-13 08:30:35

+0

任何人都可以证实这一点呢? – dzhi 2010-07-13 16:29:40

+0

为什么隐藏您添加的点,当'含量垃圾的属性:“”'不会产生一个可见的字符和线条创建元素!? – Kornel 2011-01-15 17:51:24

回答

1

后者似乎要被罚款,因为它也认为IE6(zoom:1;)。

+0

笑,MS应该被起诉浪费这么多人年。 – iamgopal 2010-07-12 11:14:37

+0

那些既占IE6。后者更加灵活。 – 2010-07-12 16:28:26

0

这一直为我工作。非常类似于你

.clearfix:after { 
    content: "."; 
    display: block; 
    height: 0; 
    font-size:0; 
    clear: both; 
    visibility:hidden; 
} 
    .clearfix{display: inline-block;} 
    * html .clearfix {height: 1%;} 
    .clearfix {display:block;} 
+1

内联块和块高度:1%是多余的。 '内容:“”'够好。 – 2010-07-12 16:25:42

3

最简洁的技术是设置溢出:隐藏用于现代浏览器:

overflow:hidden; 
zoom:1; 

如果一个元素需要流出的尺寸(负边缘或定位)然后clearfix:

#el:after { content:""; clear:both; display:block; visibility:hidden; } 

对于IE6及以下版本,您需要触发hasLayout(通过宽度,缩放:1,高度和其他属性/值组合)。从IE7开始,溢出将清除浮动。