猿问

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

我想固定表格的标题,表格存在于可滚动的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>


一只甜甜圈
浏览 700回答 2
2回答

牧羊人nacy

您要做的是将表的内容与表的标题分开。您只希望<th>滚动元素。您可以使用<tbody>和<thead>元素轻松地在HTML中定义这种分隔。现在,表头和表主体仍相互连接,它们的宽度(和滚动属性)仍相同。现在,让它们不再作为表“工作”,您可以设置display: block。这样<thead>与<tbody>人分开。table tbody, table thead{&nbsp; &nbsp; display: block;}现在,您可以将滚动条设置到表格的主体:table tbody&nbsp;{&nbsp; &nbsp;overflow: auto;&nbsp; &nbsp;height: 100px;}最后,由于<thead>不再与主体共享相同的宽度,因此您应该为表格的标题设置静态宽度:th{&nbsp; &nbsp; width: 72px;}您还应该为设置静态宽度<td>。这解决了列未对齐的问题。td{&nbsp; &nbsp; width: 72px;}请注意,您还缺少一些HTML元素。每行应位于一个<tr>元素中,该元素应包括标题行:<tr>&nbsp; &nbsp; &nbsp;<th>head1</th>&nbsp; &nbsp; &nbsp;<th>head2</th>&nbsp; &nbsp; &nbsp;<th>head3</th>&nbsp; &nbsp; &nbsp;<th>head4</th></tr>我希望这就是你的意思。附录如果您想更好地控制列的宽度,让它们之间的宽度互不相同,并确保标题和正文列保持对齐,则可以使用以下示例:&nbsp; &nbsp; table th:nth-child(1), td:nth-child(1) { min-width: 50px;&nbsp; max-width: 50px; }&nbsp; &nbsp; table th:nth-child(2), td:nth-child(2) { min-width: 100px; max-width: 100px; }&nbsp; &nbsp; table th:nth-child(3), td:nth-child(3) { min-width: 150px; max-width: 150px; }&nbsp; &nbsp; table th:nth-child(4), td:nth-child(4) { min-width: 200px; max-width: 200px; }分享编辑

森栏

我可以想到一个轻松的方法,我认为这不是最好的选择,但它会起作用。将标头创建为单独的表格,然后将另一个标头放置在div中并设置最大尺寸,然后使用允许滚动进来overflow。table {&nbsp; width: 500px;}.scroll {&nbsp; max-height: 60px;&nbsp; overflow: auto;}<table border="1">&nbsp; <tr>&nbsp; <th>head1</th>&nbsp; <th>head2</th>&nbsp; <th>head3</th>&nbsp; <th>head4</th>&nbsp; </tr></table><div class="scroll">&nbsp; <table>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <tr><td>More Text</td><td>More Text</td><td>More Text</td><td>More Text</td></tr>&nbsp; &nbsp; <tr><td>Text Text</td><td>Text Text</td><td>Text Text</td><td>Text Text</td></tr>&nbsp; &nbsp; <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>&nbsp; </table></div>
随时随地看视频慕课网APP
我要回答