Here’s a quick and easy way to create an unlimited width, scrollable horizontal container using nothing but some simple CSS. The trick here is as simple as using display: inline-block; on the child elements inside of the parent container, in combination with the white-space: nowrap; property.
Let’s say this is our markup:
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
</div>
With a little bit of CSS love, we can implement this quickly and easily, like so. Please note the use of the font-size: 0; trick I’m using here to remove the whitespace between the inline-block children. By setting font-size: initial; on the child elements, we reset font sizes to be able to cascade them as needed again. This avoids nasty margin-left: -4px; hacks and such.
.container {
box-sizing: border-box; // if you want container to conform to viewport
width: 100%;
min-height: 150px;
font-size: 0; // removes 4px space between inline-block items
white-space: nowrap;
border: 4px solid red;
overflow-x: auto;
}
.container > div {
display: inline-block;
width: 25%;
height: 150px;
background: #ccc;
font-size: initial; // resets font-size
line-height: 150px;
text-align: center;
}
.container > div:nth-of-type(even) {
background: #ddd;
}
That’s it! You can see a demo over at JSFiddle or check it out below:
