向表格主体添加滚动条

Hel*_*rld 40 html css

我希望尽可能轻松地完成任何其他库.

在我很长的桌子中,我想在<tbody>标签上添加一个滚动条,以便头部始终可见但不起作用.你能帮忙吗?

小提琴:http://jsfiddle.net/Hpx4L/

<table border="1">
  <thead>
    <tr>
      <th>Month</th>
      <th>Savings</th>
    </tr>
  </thead>
  <tfoot>
    <tr>
      <td>Sum</td>
      <td>$180</td>
    </tr>
  </tfoot>
  <tbody style="overflow-y:scroll; height:100px;"> <!-- wont work -->
    <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
          <tr>
      <td>January</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>February</td>
      <td>$80</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

bra*_*can 65

你可以将<tbody>一个可滚动的内容包装起来<div>:

HTML

....
<tbody>
  <tr>
    <td colspan="2">
      <div class="scrollit">
        <table>
          <tr>
            <td>January</td>
            <td>$100</td>
          </tr>
          <tr>
            <td>February</td>
            <td>$80</td>
          </tr>
          <tr>
            <td>January</td>
            <td>$100</td>
          </tr>
          <tr>
            <td>February</td>
            <td>$80</td>
          </tr>
          ...
Run Code Online (Sandbox Code Playgroud)

CSS

.scrollit {
    overflow:scroll;
    height:100px;
}
Run Code Online (Sandbox Code Playgroud)

看你的jsfiddle,从你的分叉:http://jsfiddle.net/VTNax/2/

  • 我不敢相信我因为使用​​ `&lt;tbody style="display: block;"&gt;` 而浪费了几个小时试图修复我的损坏布局,而解决方案就像将 `&lt;tbody&gt;` 放在一个可滚动的 ` 中一样简单&lt;div&gt;`。感谢您的解决方案! (2认同)
  • `table &gt; div &gt; tbody` 是无效的 HTML 语法 (2认同)

Noa*_*man 14

这些解决方案通常会出现标题列与主体列对齐的问题,并且在调整大小时可能无法正常工作.我知道你不想使用额外的库,但如果你碰巧使用jQuery,那么这个很小.它支持固定页眉,页脚,列跨越(colspan),水平滚动,调整大小以及在滚动开始之前显示的可选行数.

jQuery.scrollTableBody(GitHub)

只要你有一台合适的<thead>,<tbody>和(可选)<tfoot>,所有你需要做的是这样的:

$('table').scrollTableBody();
Run Code Online (Sandbox Code Playgroud)

  • @ Sevin7如果你看看这个jQuery插件的代码,它实际上是在你的表中添加额外的html/css.所以它为你搞砸了html/css,而不是你必须自己动手. (8认同)

Vee*_*tav 7

这是因为您要在表格<tbody>之前添加标签,<td>否则无法打印任何数据<td>.

所以,你必须做出<div>的发言权#headerposition: fixed;

 header
 {
      position: fixed;
 }
Run Code Online (Sandbox Code Playgroud)

做另一个<div>将充当<tbody>

tbody
{
    overflow:scroll;
}
Run Code Online (Sandbox Code Playgroud)

现在您的标题已修复,正文将滚动.标题将保留在那里.