2013-08-23 25 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/