我如何让桌子的主体滚动但将其头部固定在适当的位置?

时间:2020-03-06 14:41:43  来源:igfitidea点击:

我正在写一个页面,我需要一个HTML表来保持设置的大小。我需要表格顶部的标题始终保持在该位置,但是无论表格中添加了多少行,我都需要表格主体进行滚动。想想一个迷你版的excel。这似乎是一个简单的任务,但是我在网络上发现的几乎每个解决方案都有一些缺点。我该如何解决?

解决方案

我们是否尝试过使用thead和tbody,并使用overflow:scroll在tbody上设置了固定高度?

目标浏览器是什么?

编辑:在Firefox中效果很好(几乎),垂直滚动条的添加导致需要水平滚动条以及锁。 IE只是将每个td的高度设置为我指定的tbody高度。这是我能想到的最好的方法:

<html>
    <head>
    <title>Blah</title>
    <style type="text/css">
    table { width:300px; }
    tbody { height:10em;  overflow:scroll;}
    td { height:auto; }
    </style>
    </head>
    <body>
    <table>
        <thead>
            <tr>
              <th>One</th><th>Two</th>
              </td>
            </tr>
        </thead>
        <tbody>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
            <tr><td>Data</td><td>Data</td></tr>
        </tbody>
    </table>
    </body>
</html>

这让我非常头疼,试图为我们的应用程序实现这样的网格。我尝试了所有各种技术,但是它们都有问题。我最接近的是使用jQuery插件(例如Flexigrid)(有关替代方法,请参见http://www.ajaxrain.com),但这似乎并不支持我需要的100%宽表。

我最终要做的是自己动手做; Firefox支持滚动tbody元素,因此我浏览器嗅探并使用适当的CSS(设置高度,溢出等...询问是否需要更多详细信息)进行滚动,然后对于其他浏览器,我使用了两个单独的表设置为使用table-layout:固定的,使用确保不溢出指定大小的大小调整算法(当内容太宽而无法容纳时,普通表将扩展)。通过给两个表相同的宽度,我能够使它们的列对齐。我将第二个包裹在一个div集合中以进行滚动,并使用了一些带有边缘的锯齿状扑克,从而获得了所需的外观和感觉。

很抱歉,如果这个答案在某些地方听起来有点含糊不清;我没有太多时间,所以写得很快。如果我们希望我进一步扩展,请发表评论!

我必须找到相同的答案。我发现的最好的示例是http://www.cssplay.co.uk/menu/tablescroll.html。我发现示例2对我来说效果很好。我们将必须使用Java Script设置内部表的高度,其余为CSS。

不知道是否有人还在看这个,但是他们以前我做过的方式是使用两个表来显示单个原始表,第一个只是原始表标题行,而没有表主体行(或者使它为空的主体行)证实)。

第二个位于单独的div中,没有标题,只有原始表主体行。然后使单独的div可滚动。

div中的第二个表位于HTML中的第一个表的正下方,它看起来像是一个具有固定标题和可滚动下部的单个表。我仅在Safari,Firefox和IE(2010年春季发布的最新版本)中对此进行了测试,但它在所有这些工具中均有效。

它唯一的问题是没有主体(W3.org验证器XHTML 1.0严格),第一个表将无法验证,并且当我添加不带任何内容的表时,它将导致空白行。我们可以使用CSS使其不可见,但仍会占用页面空间。