Horizontal scroll on overflow of table

后端 未结 6 1806
耶瑟儿~
耶瑟儿~ 2021-01-30 12:31

I have a basic table in a container. The table will have about 25 columns. I am trying to add a horizontal scroll bar on overflow of the table and am having a really tough time.

相关标签:
6条回答
  • 2021-01-30 12:57

    Unless I grossly misunderstood your question, move overflow-x:scroll from .search-table to .search-table-outter.

    http://jsfiddle.net/ZXnqM/4/

    .search-table-outter {border:2px solid red; overflow-x:scroll;}
    .search-table{table-layout: fixed; margin:40px auto 0px auto;   }
    

    As far as I know you can't give scrollbars to tables themselves.

    0 讨论(0)
  • 2021-01-30 13:00
       .search-table-outter {border:2px solid red; overflow-x:scroll;}
       .search-table{table-layout: fixed; margin:40px auto 0px auto;   }
       .search-table, td, th{border-collapse:collapse; border:1px solid #777;}
       th{padding:20px 7px; font-size:15px; color:#444; background:#66C2E0;}
       td{padding:5px 10px; height:35px;}
    

    You should provide scroll in div.

    0 讨论(0)
  • 2021-01-30 13:01

    I think your overflow should be on the outer container. You can also explicitly set a min width for the columns. Like this:

    .search-table-outter { overflow-x: scroll; }
    th, td { min-width: 200px; }
    

    Fiddle: http://jsfiddle.net/5WsEt/

    0 讨论(0)
  • 2021-01-30 13:09

    The solution for those who cannot or do not want to wrap the table in a div (e.g. if the HTML is generated from Markdown) but still want to have scrollbars:

    table {
      display: block;
      max-width: -moz-fit-content;
      max-width: fit-content;
      margin: 0 auto;
      overflow-x: auto;
      white-space: nowrap;
    }
    <table>
      <tr>
        <td>Especially on mobile, a table can easily become wider than the viewport.</td>
        <td>Using the right CSS, you can get scrollbars on the table without wrapping it.</td>
      </tr>
    </table>
    
    <table>
      <tr>
        <td>A centered table.</td>
      </tr>
    </table>

    Explanation: display: block; makes it possible to have scrollbars. By default (and unlike tables), blocks span the full width of the parent element. This can be prevented with max-width: fit-content;, which allows you to still horizontally center tables with less content using margin: 0 auto;. white-space: nowrap; is optional (but useful for this demonstration).

    0 讨论(0)
  • 2021-01-30 13:10

    A solution that nobody mentioned is use white-space: nowrap for the table and add overflow-x to the wrapper.

    (http://jsfiddle.net/xc7jLuyx/11/)

    CSS

    .wrapper { overflow-x: auto; }
    .wrapper table { white-space: nowrap }
    

    HTML

    <div class="wrapper">
        <table></table>
    </div>
    

    This is an ideal scenario if you don't want rows with multiple lines.
    To add break lines you need to use <br/>
    .

    0 讨论(0)
  • 2021-01-30 13:13

    On a responsive site for mobiles the whole thing has to be positioned absolute on a relative div. And fixed height. Media Query set for relevance.

    @media only screen and (max-width: 480px){
      .scroll-wrapper{
        position:absolute;
        overflow-x:scroll;
      }

    0 讨论(0)
提交回复
热议问题