Search code examples
twitter-bootstrapcsstwitter-bootstrap-3scroll

Bootstrap horizontal scrolling


I am using the following HTML code:

<div id="list">
  <div class="row">
    <div class="col-md-3">1</div>
    <div class="col-md-3">2</div>
    <div class="col-md-3">3</div>
    <div class="col-md-3">n-times</div> 
  </div>
</div>

I am trying to display one row with infinity columns that scroll when they overflow the container.

How can I do this?

I tried to set a fixed width for the #list container, and have also set overflow-x: auto.


Solution

  • It's okay to exceed 12 column units in a row. It causes the columns to wrap, but you can override the wrapping with flexbox.

    Bootstrap 4 uses flexbox, and the utility classes to get a horizontal scrolling layout..

    <div class="container-fluid">
        <div class="row flex-row flex-nowrap">
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
            <div class="col-3">
               ..
            </div>
        </div>
    </div>
    

    Bootstrap 4 Demo: http://codeply.com/go/GoFQqQAFhN

    Also see: Horizontally scrollable list of cards in Bootstrap

    For Bootstrap 3, it would be done with some CSS for the flexbox.. .

    row > .col-xs-3 {
        display:flex;
        flex: 0 0 25%;
        max-width: 25%
    }
    
    .flex-nowrap {
        -webkit-flex-wrap: nowrap!important;
        -ms-flex-wrap: nowrap!important;
        flex-wrap: nowrap!important;
    }
    .flex-row {
        display:flex;
        -webkit-box-orient: horizontal!important;
        -webkit-box-direction: normal!important;
        -webkit-flex-direction: row!important;
        -ms-flex-direction: row!important;
        flex-direction: row!important;
    }
    

    Bootstrap 3 Demo: http://codeply.com/go/P13J3LuBIM