我如何让桌子的主体滚动但将其头部固定在适当的位置?
我正在写一个页面,我需要一个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使其不可见,但仍会占用页面空间。