For some reason, I can't prevent the UL and it's LI's from wrapping. I want the UL's width to be exactly the width of the LI's on one line (without wrapping) and if the UL becomes wider than the nav-div (800px), I want a scrollbar within the nav so I can scroll the LI.
I tried pretty much anything with display, whitespace, width's and height, but I can only get it to work if I give the UL a certain width. This, however, is not an options, since the page is generated and can contain 1-20 LI's.
Does anyone know how to make a scrollbar come up without setting the UL's width?
HTML:
<div id="nav">
<ul id="navbuttons">
<li>Some text</li>
<li>Some text</li>
...
</ul>
</div>
CSS:
div#nav
{
height: 100px;
width: 800px;
margin-left: auto;
margin-right: auto;
}
div#nav ul li
{
margin-right: 15px;
float: left;
font-size: 12px;
list-style-type: none;
}
You can use
display: inline-block; white-space: nowrap;
for the wrapper anddisplay: inline
ordisplay: inline-block
for the children.So, it would look like this: http://jsfiddle.net/kizu/98cFj/
And, if you'll need to support IE add this hack in conditional comments to enable
inline-block
s in it:By setting the
width
on the<ul>
toinherit
you can use theoverflow
property to set the overflow behavior of the element. With the valuescroll
, all of the element's contents will scroll (in both x and y directions) if the height and the width of the contents overflow that of the box:Caveat: Untested
Would you not just want to set a width for the li item
And then set the width to a fixed width and overflow on the UL to scroll?
This would cause you UL to scroll when your li's went past say 8, is that what you're after?
try this
Add the following rule: