我有一个名为NAV的div,在NAV内部我有一个5升的UL,我向左浮动,但是当我这样做时,NAV会崩溃。我知道这是因为我在NAV周围放了一个边框,看它是否崩溃了。这是一个例子。
collapsed http://img401.imageshack.us/img401/8867/collapsedze4.png
no collapsed http://img71.imageshack.us/img71/879/nocollapsedkx7.png
正如您在第一张图片中看到的那样,NAV div中的链接是左侧浮动的 黑色边框ontop是名为NAV的实际div。
在此图片中,您可以看到它的顶部和底部边框是如何折叠的。
这里是我使用的一些html和css。
alt text http://img301.imageshack.us/img301/5514/codejc8.png
#nav #ulListNavi a {
float: left;
}
答案 0 :(得分:36)
将overflow
以外的任何visible
值添加到您的容器中:
div#nav { overflow:auto; }
然后添加width
以恢复宽度
div#nav { width: 100%; overflow:auto; }
答案 1 :(得分:15)
一种解决方案是在最后一个浮动锚之后为元素添加“clear:both”样式,例如:
<div id="nav">
<ul id="ulListNavi">
<li><a href="#">Home</a></li>
<li><a href="#">Search</a></li>
<li><a href="#">Flowers</a></li>
<li><a href="#">My Account</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
<div style="clear:both;"></div>
</div>
这会导致contains元素在关闭包含框之前清除所有浮动元素。
答案 2 :(得分:5)
此处有一些清除浮动的其他选项:
http://www.quirksmode.org/css/clearing.html
http://www.sitepoint.com/blogs/2005/02/26/simple-clearing-of-floats/
至于做到这一点的最佳方式,这几乎是一场神圣的战争,纯粹主义者会对额外的div感到厌恶,如果你没有被一点额外的标记所迷惑,那么Joshua和AJ所建议的加入了清除的div工作正常,是一种可靠的技术,但至少有17种方法可以做到这一点......
答案 3 :(得分:4)
在ul:
之后添加此代码<div style="clear: both"></div>
答案 4 :(得分:2)
尝试将包含元素浮动到左侧。
答案 5 :(得分:2)
不要打扰清除元素或溢出。加上这个:
#nav {
float: left;
}
当你浮动LI时,#nav不再“包含”任何东西,因此它会崩溃。但是如果#nav也浮动,它包含浮在其中的任何东西,所以它会再次扩展。
(另请考虑删除#nav div并将相同的样式应用于UL。)
答案 6 :(得分:2)
您的问题是因为您正在浮动<A>
元素,但每个元素都位于<LI>
元素内。默认情况下,LI
会显示为块,因此每个<LI>
都会强制其子<A>
在新行上开始。
如果你浮动<LI>
,我想你会解决你的问题。
#nav #ulListNavi li {
float: left;
}
答案 7 :(得分:1)
最快的解决方案是添加overflow:hidden来清除父元素上的浮点数:
#nav{overflow:hidden;}
答案 8 :(得分:0)
不改变您的HTML:
#nav
{
width: 100%;
overflow: auto;
border: solid 1px red;
}
#ulListNavi
{
margin: 0;
padding: 0;
list-style: none;
}
#nav #ulListNavi li
{
float: left;
}
#nav #ulListNavi li a
{
margin-left: 5px;
}
适用于IE8和FF 3.5