This question already has an answer here:
I currently have a setup of divs within a container div, as follows:
<div id="container">
<div id="element"> Element 1 content </div>
<div id="element"> Element 2 content </div>
<div id="element"> Element 3 content </div>
<div id="element"> Element 4 content </div>
</div>
style.css:
.container {
width:200px;
overflow-x:auto;
overflow-y:hidden;
}
.element {
width:100px;
float:left;
}
Here's a jsFiddle of the code: http://jsfiddle.net/vZWTc/.
So, I would like each of the elements to line up next to each other (all 4 in one row), but only have the first two visible (container is 200px, each element is 100px, so only 2 are visible at a time), while the user can scroll (horizontally) to the 3rd and 4th elements (as they are less important)
However, with this setup, elements 3 and 4 wrap down to the next line
updating the container class with white-space:nowrap
does nothing. That only affects text, not divs apparently.
Any ideas? Thanks in advance!
There are two methods:
1) Clearfix - added to the container.
2) Clearing DIV - placed after the last floating element.
You can save some markup in your situation be using an unordered list instead:
This way you can style the contents without and extra class name. It makes more semantic sense as well.
Use a wrapper div with the total width of the 4 elements, and set the container to hidden overflow, html example...
and for the css
You can just set height: like so
Divs are block level elements - which means they create a new line. If you want block level elements next to eachother then they will need to be floated with
float:left
orfloat:right
. Remember to clear them withclear: both
when you want stuff to start going onto new lines.To prevent them from wrapping you can use the
overflow:
parameter.I would also suggest using the CSS direct child selector instead of specifying the same class
element
over and over again.div.container > div { color: red; }
Firstly for these fields to use those CSS styles - they would need to be #container and #element respectively. Either that or change it to use a wrapping div to handle the scrolling.
Markup:
CSS:
Demo available here!