为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用CSS制作带有固定标题的可滚动表格

如何使用CSS制作带有固定标题的可滚动表格

一只甜甜圈 2019-12-27 15:17:30
我想固定表格的标题,表格存在于可滚动的div中,请在此处查看我的代码:http : //jsfiddle.net/w7Mm8/114/请为我提供解决方案。谢谢我的代码:<div style="position: absolute; height: 200px; overflow: auto; ">    <div style="height: 250px;">        <table border="1">            <th>head1</th>            <th>head2</th>            <th>head3</th>            <th>head4</th>            <tr>                <td>row 1, cell 1</td>                <td>row 1, cell 2</td>                <td>row 1, cell 2</td>                <td>row 1, cell 2</td>            </tr>            <tr>                <td>row 2, cell 1</td>                <td>row 2, cell 2</td>                <td>row 1, cell 2</td>                <td>row 1, cell 2</td>            </tr>        </table>    </div></div>
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您要做的是将表的内容与表的标题分开。您只希望<th>滚动元素。您可以使用<tbody>和<thead>元素轻松地在HTML中定义这种分隔。

现在,表头和表主体仍相互连接,它们的宽度(和滚动属性)仍相同。现在,让它们不再作为表“工作”,您可以设置display: block。这样<thead>与<tbody>人分开。


table tbody, table thead

{

    display: block;

}

现在,您可以将滚动条设置到表格的主体:


table tbody 

{

   overflow: auto;

   height: 100px;

}

最后,由于<thead>不再与主体共享相同的宽度,因此您应该为表格的标题设置静态宽度:


th

{

    width: 72px;

}

您还应该为设置静态宽度<td>。这解决了列未对齐的问题。


td

{

    width: 72px;

}

请注意,您还缺少一些HTML元素。每行应位于一个<tr>元素中,该元素应包括标题行:

<tr>

     <th>head1</th>

     <th>head2</th>

     <th>head3</th>

     <th>head4</th>

</tr>

我希望这就是你的意思。

附录


如果您想更好地控制列的宽度,让它们之间的宽度互不相同,并确保标题和正文列保持对齐,则可以使用以下示例:


    table th:nth-child(1), td:nth-child(1) { min-width: 50px;  max-width: 50px; }

    table th:nth-child(2), td:nth-child(2) { min-width: 100px; max-width: 100px; }

    table th:nth-child(3), td:nth-child(3) { min-width: 150px; max-width: 150px; }

    table th:nth-child(4), td:nth-child(4) { min-width: 200px; max-width: 200px; }

分享编辑


查看完整回答
反对 回复 2019-12-27
?
森栏

TA贡献1810条经验 获得超5个赞

我可以想到一个轻松的方法,我认为这不是最好的选择,但它会起作用。


将标头创建为单独的表格,然后将另一个标头放置在div中并设置最大尺寸,然后使用允许滚动进来overflow。


table {

  width: 500px;

}


.scroll {

  max-height: 60px;

  overflow: auto;

}

<table border="1">

  <tr>

  <th>head1</th>

  <th>head2</th>

  <th>head3</th>

  <th>head4</th>

  </tr>

</table>

<div class="scroll">

  <table>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>More Text</td><td>More Text</td><td>More Text</td><td>More Text</td></tr>

    <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>

    <tr><td>Even More Text Text</td><td>Even More Text Text</td><td>Even More Text Text</td><td>Even More Text Text</td></tr>

  </table>

</div>


查看完整回答
反对 回复 2019-12-27
  • 2 回答
  • 0 关注
  • 699 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信