带有固定标题和固定列的HTML表格?

时间:2009-03-26 01:40:29

标签: javascript html css html-table

是否有CSS / JavaScript技术可以显示一个长HTML表格,以便列标题在屏幕上保持固定,第一个颜色保持不变并滚动数据。

我希望能够滚动表格的内容,但始终能够看到顶部的列标题和左侧的第一列。

如果有一个jQuery插件会很棒!如果它有助于我唯一关心的浏览器是Firefox。

13 个答案:

答案 0 :(得分:19)

link posted by pranav的工作示例:

http://jsbin.com/nolanole/1/edit?html,js,output

仅供参考:在IE 6,7和&amp ;;中测试8(兼容模式开启或关闭),FF 3& 3.5,Chrome 2.不对屏幕阅读器友好(标题不是内容表的一部分)。

EDIT 5/5/14:将示例移至jsBin。这已经过时了,但仍然可以在当前的Chrome,IE和Firefox中使用(尽管IE和Firefox可能需要对行高进行一些调整)。

答案 1 :(得分:3)

jQuery DataTables plug-in 是实现类似excel的固定列和标头的绝佳方法。

请注意网站的示例部分和“附加内容” http://datatables.net/examples/
http://datatables.net/extras/

“Extras”部分包含固定列和固定标题的工具。

固定列
http://datatables.net/extras/fixedcolumns/
(我相信此页面上的示例最适合您的问题。)

固定标题
http://datatables.net/extras/fixedheader/
(包括具有整页电子表格样式布局的示例:http://datatables.net/release-datatables/extras/FixedHeader/top_bottom_left_right.html

答案 2 :(得分:2)

您可能正在寻找this

但它有一些已知的问题。

答案 3 :(得分:2)

我看到这一点,虽然一个老问题,是一个插入我自己的脚本的好地方:

http://code.google.com/p/js-scroll-table-header/

它只是没有配置,很容易设置。

答案 4 :(得分:1)

如果您想要的是在表格中的数据垂直滚动时让标题保持不变,您应该实现< tbody>用“overflow-y:auto”设置样式:

<table>
  <thead>
    <tr>
      <th>Header1</th>
       . . . 
    </tr>
   </thead>
   <tbody style="height: 300px; overflow-y: auto"> 
     <tr>
       . . .
     </tr>
     . . .
   </tbody>
 </table>

如果&lt; tbody&gt;内容长度高于所需的高度,它将开始滚动。但是,无论滚动位置如何,标题都将保持固定在顶部。

答案 5 :(得分:1)

在这个答案中,我发现你的问题也是最好的答案:

HTML table with fixed headers?

并基于纯CSS

答案 6 :(得分:0)

我创建了一些具有固定标题,固定页脚,固定左列和固定右列的内容。这只适用于IE。由于大多数用户仍在使用IE,这可能会有所帮助。请在Scrollable Table中找到此处的代码。请告诉我你的建议。

与此同时,我正在努力修复其他浏览器中的列。我会及时向大家发布。 : - )

答案 7 :(得分:0)

<script>
   $(document).ready(function () {
   $("#GridHeader table").html($('#<%= GridView1.ClientID %>').html());
   $("#GridHeader table tbody .rows").remove();
   $('#<%= GridView1.ClientID %> tr:first th').hide();
});
</script>

<div id="GridHeader">
    <table></table>
</div>

<div style="overflow: auto; height:400px;">
    <asp:GridView ID="GridView1" runat="server" />
</div>

答案 8 :(得分:0)

不完美,但它让我比这里的一些最佳答案更接近。

两个不同的表,一个带有标题,另一个用div包含内容

<table>
  <thead>
    <tr><th>Stuff</th><th>Second Stuff</th></tr>
  </thead>
</table>
<div style="height: 600px; overflow: auto;">
  <table>
    <tbody>
      //Table
    </tbody>
  </table>
</div>

答案 9 :(得分:-2)

我知道你可以do it for MSIEthis limited example似乎适用于firefox(不确定该技术的可扩展性)。

答案 10 :(得分:-2)

第一列在标题正下方的单元格上有一个滚动条

<table>
    <thead>
        <th> Header 1</th>
        <th> Header 2</th>
        <th> Header 3</th>
    </thead>
    <tbody>
        <tr>
            <td>
                <div style="width: 50; height:30; overflow-y: scroll"> 
                    Tklasdjf alksjf asjdfk jsadfl kajsdl fjasdk fljsaldk 
                    fjlksa djflkasjdflkjsadlkf jsakldjfasdjfklasjdflkjasdlkfjaslkdfjasdf
                </div>
            </td>
            <td>
                Hello world
            </td>
            <td> Hello world2
        </tr>
    </tbody>
</table>

答案 11 :(得分:-2)

YUI DataTable

我不知道YUI DT是否具有此功能,但如果确实如此,我不会感到惊讶。

答案 12 :(得分:-3)

这是一个很好的jQuery插件,适用于所有浏览器!

你有一个固定的标题表而没有固定它的宽度。

检查:https://github.com/benjaminleouzon/tablefixedheader

免责声明:我是该插件的作者。