2013-08-23 49 views

回答

1

在li上使用浮標時,它們被從文檔流中取出,這意味着UL不再知道它的孩子的大小,因此無法擴大它的大小以適合它的孩子。

在UL上浮動。 http://fiddle.jshell.net/Gghz8/2/

http://coding.smashingmagazine.com/2009/10/19/the-mystery-of-css-float-property/

當我開發我的網站,我漂浮幾乎一切。它只是有助於保持一致並避免像現在這樣的問題。

+0

謝謝!這是解決問題的漂亮方法。但是會浮出文檔的正常流程? AFAIK only position:absolute會將它們帶出正常流程的文件 – Daniel

+0

浮動將使UL脫離文檔的正常流程,但是如果您將所有內容都浮動起來,那麼所有內容都會知道它應該放在哪裏,孩子有多大是,因此它需要多大。請不要忘記標記正確的答案。 =) – seemly

+0

根據http://css-tricks.com/all-about-floats/,「浮動元素仍然是網頁流的一部分,這與使用絕對定位的頁面元素明顯不同。絕對定位頁面元素從網頁流中移除「。那麼究竟改變了它的行爲? – Daniel

0

認沽溢出:隱藏;在那個ul。

+0

你不想這樣做,如果你有一個下拉列表菜單 – seemly

+0

我同意,在這種情況下,我會使用display:inline-block;對li項目而不是float:left; –

+0

儘管當你不得不迎合IE7並且通過顯示破解你的方式時,這個位很髒:內聯,當使用浮動覆蓋所有基地時。特別是在像這樣的情況下。 – seemly

1

第1步 - 添加clearfix CSS

.cf:before, 
.cf:after { 
    content: " "; /* 1 */ 
    display: table; /* 2 */ 
} 

.cf:after { 
clear: both; 
} 

/** 
* For IE 6/7 only 
* Include this rule to trigger hasLayout and contain floats. 
*/ 

.cf { 
    *zoom: 1; 
} 

第2步 - 添加類成HTML UL

<ul class="cf"> 

http://jsfiddle.net/Gghz8/3/