可能的重复:
如何调整div的高度以包裹其浮动的子
我想在带有一堆浮动<li>
的<div>
内部有一个<ul>
。唯一的问题是包含的<div>
折叠为0px高。如何使<div>
保持其高度,就像它包含<li>
一样?
HTML:
<div>
<ul>
<li>stuff</li>
<li>morestuff</li>
</ul>
</div>
CSS:
div {
background: rgb(90, 90, 90);
}
ul {
color: red;
}
li {
float: left;
clear: none;
margin-right: 10px;
}
如果使用花车是老式的,并且你知道更好的风格,请告诉我!
选项1(推荐):给div样式overflow:hidden;
,它将校正其高度。
选项2:或者在当前div 的末尾添加一个更清晰的div
<div>
<ul>
<li>stuff</li>
<li>morestuff</li>
</ul>
<div style="clear:both;"> </div>
</div>
jsFiddle演示
编辑:为了澄清,以上两个都有完整的跨浏览器支持,不需要黑客攻击或无效的CSS。
尝试Display:inline-block;
li {
display:inline-block;
margin-right: 10px;
}
演示
跨浏览器内联块
要解决您的确切问题:
div {
background: rgb(90, 90, 90);
overflow: auto;
}
也许是一种不那么"老式"的方法:
div {
background: rgb(90, 90, 90);
}
ul {
color: red;
}
li {
display: inline-block;
*vertical-align : auto;
*display: inline; // targets IE7 and such, same effect
margin-right: 10px;
}
您需要在li元素上调整您的边距,以匹配您的确切规格。使用float仍然很酷,但当display:inline块将解决您想要的大部分问题时,为什么要麻烦呢???
附言:有时IE黑客是可以的——我建议使用像Sass这样的预处理器和像Compass这样的库来帮助你管理它们。
关于这个问题的几篇文章:
- http://www.vanseodesign.com/css/inline-blocks/
- http://www.onderhond.com/blog/inline-block-vs-float
无论何时使用FLOAT
属性,都不要忘记添加clear
属性以及
你可以试试这个
<div>
<ul>
<li>stuff</li>
<li>morestuff</li>
<li style="clear:both;float:none"></li> <!-- Added Clear, removed float -->
</ul>
</div>