21

I'm working on a project using twitter bootstrap. We have a table that has lots of columns and is going to be larger than the browser window almost every time.

This is what happens on the right :

The Problem

The table border stays in the browser window, while the table contents do not. If I scroll, the borders stay where they are, they do not "follow" the browser window.

You can see the problem on this jsfiddle. It works on Safari, not on Chrome or Firefox.

The layout is like this :

<body>
  <div class='container-fluid'>
    <div class='row-fluid'>
      <div class='span1'>
        ... menusidebar here...
      </div>
      <div class='span11'>
        <table class="table table-striped table-bordered" style="white-space: nowrap">
          <thead>
            <tr>
            </tr>
          </thead>
          <tbody>
            <tr>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</body>

I hope you can help me. If you need more information, just ask, I'd be glad to supply.

This is a Rails 3.2 app, using the gem bootstrap-sass in version 2.2.1.1 (the problem appears in 2.2.2.0 too). The first three numbers reflect the bootstrap version.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
ksol
  • 11,835
  • 5
  • 37
  • 64

6 Answers6

30

This was the only solution that worked for me...


    .table {
        max-width: none;
        table-layout: fixed;
        word-wrap: break-word;
    }

diogoareia
  • 343
  • 3
  • 7
24

If you are on Bootstrap 3, another approach is to wrap your table in a

<div class="table-responsive"><table>...</table></div>

This makes the table responsive.

andrewsi
  • 10,807
  • 132
  • 35
  • 51
Shirren
  • 249
  • 2
  • 4
7

Bootstrap has the following style applied to Tables:

table {
    max-width: 100%;
}

If you override that property in your custom stylesheet it should hopefully solve the problem. Changing it to 'none' should work.

table {
    max-width: none;
}
Jon Adams
  • 24,464
  • 18
  • 82
  • 120
Billy Moat
  • 20,792
  • 7
  • 45
  • 37
  • actually, I had to set it to 'none', I let you edit your answer. Thanks a lot : ) – ksol Feb 06 '13 at 15:31
  • Hmm, strange as I had changed it to 'auto' via Firebug and that worked. Ah well, I'll change it to 'none' in my answer anyway. – Billy Moat Feb 06 '13 at 15:33
  • 1
    Note: This is now outdated, there's far better methods with the release of bootstrap3 and the upcoming bootstrap4 – GeorgeWL Apr 29 '16 at 11:53
  • 4
    TheGeorgeL what are some of these better methods? – ctb Jun 23 '16 at 21:53
4

You can apply the style = "overflow: auto;" to put a horizontal scroll bar at your table. Thus the design will still remain responsive. Follow the code:

.table-scrollable{
    overflow: auto;
}

And use it on your div:

<div class='span11 table-scrollable'>
0

Applying the style = "overflow: auto;" worked just fine for me

-1

I found solution somewhere in internet...

table {table-layout:fixed}

It solve problems in Firefox & IE, with bootstrap 2 & 3