How to hide Table Row Overflow?

前端 未结 7 749
故里飘歌
故里飘歌 2020-11-28 09:16

I have some html tables where the textual data is too large to fit. So, it expands the cell vertically to accommodate for this. So now rows that have the overflow are twic

相关标签:
7条回答
  • 2020-11-28 09:33

    Need to specify two attributes, table-layout:fixed on table and white-space:nowrap; on the cells. You also need to move the overflow:hidden; to the cells too

    table { width:250px;table-layout:fixed; }
    table tr { height:1em;  }
    td { overflow:hidden;white-space:nowrap;  } 
    

    Here's a Demo . Tested in Firefox 3.5.3 and IE 7

    0 讨论(0)
  • 2020-11-28 09:33

    If javascript is accepted as an answer, I made a jQuery plugin to address this issue (for more information about the issue see CSS: Truncate table cells, but fit as much as possible).

    To use the plugin just type

    $('selector').tableoverflow();
    

    Plugin: https://github.com/marcogrcr/jquery-tableoverflow

    Full example: http://jsfiddle.net/Cw7TD/3/embedded/result/

    0 讨论(0)
  • 2020-11-28 09:33

    wrap the table in a div with class="container"

    div.container {
        width: 100%;
        overflow-x: auto;
    }
    

    then

    #table_id tr td {
       white-space:nowrap;
    }
    

    result

    0 讨论(0)
  • 2020-11-28 09:35

    In general, if you are using white-space: nowrap; it is probably because you know which columns are going to contain content which wraps (or stretches the cell). For those columns, I generally wrap the cell's contents in a span with a specific class attribute and apply a specific width.

    Example:

    HTML:

    <td><span class="description">My really long description</span></td>
    

    CSS:

    span.description {
        display: inline-block;
        overflow: hidden;
        white-space: nowrap;
        width: 150px;
    }
    
    0 讨论(0)
  • 2020-11-28 09:46

    In most modern browsers, you can now specify:

    <table>
     <colgroup>
      <col width="100px" />
      <col width="200px" />
      <col width="145px" />
     </colgroup>
     <thead>
      <tr>
       <th>My 100px header</th>
       <th>My 200px header</th>
       <th>My 145px header</th>
      </tr>
     </thead>
     <tbody>
      <td>100px is all you get - anything more hides due to overflow.</td>
      <td>200px is all you get - anything more hides due to overflow.</td>
      <td>100px is all you get - anything more hides due to overflow.</td>
     </tbody>
    </table>
    

    Then if you apply the styles from the posts above, as follows:

    table {
        table-layout: fixed; /* This enforces the "col" widths. */
    }
    table th, table td {
        overflow: hidden;
        white-space: nowrap;
    }
    

    The result gives you nicely hidden overflow throughout the table. Works in latest Chrome, Safari, Firefox and IE. I haven't tested in IE prior to 9 - but my guess is that it will work back as far as 7, and you might even get lucky enough to see 5.5 or 6 support. ;)

    0 讨论(0)
  • 2020-11-28 09:54

    Only downside (it seems), is that the table cell widths are identical. Any way to get around this? – Josh Stodola Oct 12 at 15:53

    Just define width of the table and width for each table cell

    something like

    table {border-collapse:collapse; table-layout:fixed; width:900px;}
    th {background: yellow; }
    td {overflow:hidden;white-space:nowrap; }
    .cells1{width:300px;}
    .cells2{width:500px;}
    .cells3{width:200px;}
    

    It works like a charm :o)

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