CSS horizontal scroll
Asked Answered
P

4

63

I'm trying to create a <div> with a series of photos which are horizontally scrollable only.

It should look something like this LINK;

However the above is only achieved by specifying a width for the <div> which contains the photos (so they don't 'word-wrap'). If I don't put a width - it looks like this;LINK

What can I do using CSS to prevent putting in a fixed width as the images may vary.

Thanks

Pointless answered 29/3, 2012 at 12:54 Comment(0)
A
131

You can use display:inline-block with white-space:nowrap. Write like this:

.scrolls {
    overflow-x: scroll;
    overflow-y: hidden;
    height: 80px;
    white-space:nowrap;
}
.imageDiv img {
    box-shadow: 1px 1px 10px #999;
    margin: 2px;
    max-height: 50px;
    cursor: pointer;
    display:inline-block;
    *display:inline;/* For IE7*/
    *zoom:1;/* For IE7*/
    vertical-align:top;
 }

Check this http://jsfiddle.net/YbrX3/

Abramabramo answered 29/3, 2012 at 13:1 Comment(3)
@Abramabramo plz help me out i used ur css which is in jsfiddle and suppose some data r cuming dynamically by ajax callin which is storing in button which is in footer now how i can scroll that button not window page only footer – Mallette
How to also support scrolling by grabbing an image and dragging left/right? – Ninnetta
white-space:nowrap was the answer for me. – Purposeful
J
15

Here's a solution with for images with variable width and height:

.container {
  display: flex;
  flex-wrap: no-wrap;
  overflow-x: auto;
  margin: 20px;
}
img {
  flex: 0 0 auto;
  width: auto;
  height: 100px;
  max-width: 100%;
  margin-right: 10px;
}
<div class="container">
 <img src="https://via.placeholder.com/100x100" />
 <img src="https://via.placeholder.com/50x50" />
 <img src="https://via.placeholder.com/5x50" />
 <img src="https://via.placeholder.com/100x50" />
 <img src="https://via.placeholder.com/50x100" />
 <img src="https://via.placeholder.com/20x50" />
 <img src="https://via.placeholder.com/50x30" />
 <img src="https://via.placeholder.com/50x150" />
 <img src="https://via.placeholder.com/250x50" />
 <img src="https://via.placeholder.com/150x350" />
 <img src="https://via.placeholder.com/50x350" />
 <img src="https://via.placeholder.com/100x100" />
 <img src="https://via.placeholder.com/50x50" />
 <img src="https://via.placeholder.com/5x50" />
 <img src="https://via.placeholder.com/100x50" />
 <img src="https://via.placeholder.com/50x100" />
 <img src="https://via.placeholder.com/20x50" />
 <img src="https://via.placeholder.com/50x30" />
 <img src="https://via.placeholder.com/50x150" />
 <img src="https://via.placeholder.com/250x50" />
 <img src="https://via.placeholder.com/150x350" />
 <img src="https://via.placeholder.com/50x350" />
</div>
Janina answered 14/12, 2020 at 12:38 Comment(2)
Thank you, simple and effective solution.πŸ™ – Caty
Thanks! Much better and more modern solution to the problem, this should be the accepted answer in 2023. – Ulyssesumayyad
T
0

Use this code to generate horizontal scrolling blocks contents. I got this from here http://www.htmlexplorer.com/2014/02/horizontal-scrolling-webpage-content.html

<html>
<title>HTMLExplorer Demo: Horizontal Scrolling Content</title>
<head>
<style type="text/css">
#outer_wrapper {  
    overflow: scroll;  
    width:100%;
}
#outer_wrapper #inner_wrapper {
    width:6000px; /* If you have more elements, increase the width accordingly */
}
#outer_wrapper #inner_wrapper div.box { /* Define the properties of inner block */
    width: 250px;
    height:300px;
    float: left;
    margin: 0 4px 0 0;
    border:1px grey solid;
}
</style>
</head>
<body>

<div id="outer_wrapper">
    <div id="inner_wrapper">
        <div class="box">
            <!-- Add desired content here -->
            HTMLExplorer.com - Explores HTML, CSS, Jquery, XML, PHP, JSON, Javascript 
        </div>
        <div class="box">
             <!-- Add desired content here -->
            HTMLExplorer.com - Explores HTML, CSS, Jquery, XML, PHP, JSON, Javascript 
        </div>
        <div class="box">
            <!-- Add desired content here -->
            HTMLExplorer.com - Explores HTML, CSS, Jquery, XML, PHP, JSON, Javascript 
        </div>
        <div class="box">
            <!-- Add desired content here -->
            HTMLExplorer.com - Explores HTML, CSS, Jquery, XML, PHP, JSON, Javascript 
        </div>
        <div class="box">
             <!-- Add desired content here -->
            HTMLExplorer.com - Explores HTML, CSS, Jquery, XML, PHP, JSON, Javascript 
        </div>
        <div class="box">
            <!-- Add desired content here -->
            HTMLExplorer.com - Explores HTML, CSS, Jquery, XML, PHP, JSON, Javascript 
        </div>
        <!-- more boxes here -->
    </div>
</div>
</body>
</html>
Thanos answered 11/2, 2014 at 17:52 Comment(0)
F
0

try using table structure, it's more back compatible. Check this outHorizontal Scrolling using Tables

Forgiving answered 2/7, 2015 at 11:40 Comment(0)

© 2022 - 2024 β€” McMap. All rights reserved.