我有320像素宽DIV
。内部有一个UL
LI
导航,其中每个LI
都会向左浮动,以便在一行中显示它们。我希望它们彼此相邻堆叠并在父DIV
底部显示滚动条以水平滚动内容。
LI
s(动态生成)UL
(动态生成)我想用CSS-only方法来解决这个问题。
#menu
{
width: 320px;
overflow: scroll;
}
ul li
{
float: left;
display: block;
}
<div id="menu">
<ul>
<li><a href="#">Car</a></li>
<li><a href="#">Very long text item</a></li>
<li><a href="#">Foobar foobar</a></li>
</ul>
</div>
问题:它不起作用。没有水平滚动条。 Floats在父DIV中以多行包装和堆叠。
答案 0 :(得分:3)
你需要漂浮<ul>
左边,并给它一个疯狂的大负边距,以确保它的宽度总是超过外部DIV的宽度。像这样:
#menu
{
width: 320px;
overflow: auto;
}
ul
{
float: left;
margin-right: -30000px;
}
ul li
{
float: left;
display: block;
}
UL上的float: left
可确保您没有巨大边距所产生的额外空白区域。
jsFiddle:http://jsfiddle.net/8SEQT/5/
答案 1 :(得分:1)
试试这个......
指定每个<li>
的宽度..
li
{
width:100px;
float:left;
display:block;
margin-right:-110px
}
margin-right:-xxxpx
将在每个项目之后留下一些xxxpx空间以容纳另一个项目,从而阻止列表项目进入下一行......
答案 2 :(得分:1)
获得水平滚动的唯一方法是UL比#menu宽。
由于您不知道您将拥有多少元素,因此您可以将UL元素设置为随机高的宽度,例如: ul {width:9000px;}
将所有浮动LI元素保存在一行中。
另外,我会将你的#menu设置为overflow:auto而不是overflow:scroll。
答案 3 :(得分:0)