tags:

views:

1646

answers:

3

I'd like to put a group of div elements of fixed width into a container and have the horizontal scroll bar appear. The div/span elements should appear in a line, left to right in the order they appear in the HTML. (essentially unwrapped)

This way the horizontal scroll bar will appear and can be used instead of the vertical scroll bar for reading through the content (left to right).

I've tried floating them in a container and then putting a "white-space:nowrap" style on the container, but alas, it still seems to wrap. Ideas?

It looked like this:

 <style>
  .slideContainer {
    white-space: nowrap;
  }
  .slide { 
    width:800px;
    float:left;
    display:inline;
  }
 </style>

 <div class="slideContainer">
    <div class="slide">Some content</div>
    <div class="slide">More content</div>
    <div class="slide">Even More content!</div>
 </div>

Update: See site for examples, but they were wrong about not being another way - I'm sure the article is old though.

A: 

Looks like divs will not go outside of their body's width. Even within another div.

I threw this up to test (without a doctype though) and it does not work as thought.

<style>
    .slideContainer {
        overflow-x: scroll;
    }
    .slide {
        float: left;
    }
</style>

<div class="slideContainer">
    <div class="slide" style="background: #f00">Some content Some content Some content Some content Some content Some content</div>
    <div class="slide" style="background: #ff0">More content More content More content More content More content More content</div>
    <div class="slide" style="background: #f0f">Even More content! Even More content! Even More content!</div>
</div>

What i am thinking is that the inner div's could be loaded through an iFrame, since that is another page and its content could be very wide.

Ólafur Waage
overflow-x or scroll-x , I cant remember which it is. Lazy today.
Kent Fredric
A: 

As mentioned you can use:

overflow: scroll;

If you only want the scroll bar to appear when necessary, you can use the "auto" option:

overflow: auto;

I don't think you should be using the "float" property with "overflow", but I'd have to try out your example first.

jthompson
+5  A: 

Try this:

<style>
 .slideContainer{
   white-space: nowrap;
   overflow-x: scroll;
 }
 .slide{ 
   display: inline-block;
   width: 600px;
   white-space: normal;
 }
</style>

<div class="slideContainer">
 <span class="slide">Some content</span>
 <span class="slide">More content. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span>
 <span class="slide">Even more content!</span>
</div>

Note that you can omit .slideContainer{ overflow-x: scroll; } (which not all browsers support properly yet), and you'll get a scrollbar on the window instead of on this container.

The key here is display: inline-block. This has decent cross-browser support nowadays, but as usual, it's worth testing in all browsers to be sure.

Ron DeVera
Actually, I tried this seperate from my full presentation and it seemed to work relatively well (at least in firefox 3, IE 7, Chrome and Opera, which is pretty much all I care about)
altCognito