【发布时间】:2016-09-13 07:54:56
【问题描述】:
我想创建一个带有固定thead 和tfoot 以及可滚动tbody 的表!
我尝试了几种方法,包括纯 CSS 和 CSS + Javascript,但它们都很弱且不可靠,我可以通过更改演示中的标记轻松打破它们。
我想要的是一种让表格表现得像表格的方法,这意味着浏览器将根据内容自动调整列(都在页面在窗口调整大小的情况下加载)以及在这些情况下:
如果列标题 (
thead > tr > th) 的内容大于列正文 (tbody > tr > td) 的内容并且大于列脚的内容 (tfoot > tr > td),则列应调整大小基于列标题的大小如果列正文 (
tbody > tr > td) 的内容大于列标题 (thead > tr > th) 的内容并且大于列脚的内容 (tfoot > tr > td),则列应调整大小基于列体的大小如果列的页脚内容 (
tfoot > tr > td) 大于列标题的内容 (thead > tr > th) 并且大于列正文的内容 (tbody > tr > td),则列应调整大小基于列页脚的大小
下面的table 应该阐明场景:
<table>
<thead>
<tr>
<th>Header one *leads the width* (case 1)</th>
<th>Header two</th>
<th>Header three</th>
</tr>
</thead>
<tbody>
<tr>
<td>Column one</td>
<td>Column two *leads the width* (case 2)</td>
<td>Column three</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Footer one</td>
<td>Footer two</td>
<td>Footer three *leads the width* (case 3)</td>
</tr>
</tfoot>
</table>
我想要一个干净(尽可能)和可靠的解决方案,可以适用于不同的场景,可能只有 CSS,但 JavaScript 也可以(vanilla 和干净的 JavaScript,而不是 jQuery 插件)。
我不关心旧浏览器的支持(拥有它或者至少能找到一个可以在旧浏览器上优雅降级的解决方案,但它是可选的)......我什至可以接受使用divs 而不是如果最终解决方案按预期工作,则表节点......那么在 2016 年,使用现代浏览器和 CSS 是否可能以某种方式实现?!
编辑:
正文应该垂直滚动,表格可以有任意数量的列
更新:
我想出了这个解决方案:https://codepen.io/daveoncode/pen/LNomBE 但我仍然不是 100% 满意。主要问题是我无法为页眉和页脚单元格设置不同的背景。
更新 2:
现在可以使用了!
【问题讨论】:
-
你可以使用数据表吗??
-
你想实现垂直滚动还是水平滚动?
-
垂直滚动
-
this 答案呢?
标签: javascript html css html-table