2010-07-12 64 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開始,溢出將清除浮動。