我在设置 tbody 高度宽度溢出滚动时遇到问题。
<style> tbody{ height:50px;display:block;overflow:scroll } </style> <h3>Table B</h3> <table style="border: 1px solid red;width:300px;display:block"> <thead> <tr> <td>Name</td> <td>phone</td> </tr> </thead> <tbody style='height:50px;display:block;overflow:scroll'> <tr> <td>AAAA</td> <td>323232</td> </tr> <tr> <td>BBBBB</td> <td>323232</td> </tr> <tr> <td>CCCCC</td> <td>3435656</td> </tr> </tbody> </table>
在这里访问我的小提琴
我想要表 B 和表 A 一样带有溢出滚动。
任何帮助将不胜感激。
非常感谢,M。
如果要tbody显示滚动条,请将其设置为display: block;.
tbody
display: block;
设置display: table;为tr以便它保持表的行为。
display: table;
tr
要均匀分布细胞,请使用table-layout: fixed;.
table-layout: fixed;
演示
CSS:
table, tr td { border: 1px solid red } tbody { display: block; height: 50px; overflow: auto; } thead, tbody tr { display: table; width: 100%; table-layout: fixed;/* even columns width , fix width of table too*/ } thead { width: calc( 100% - 1em )/* scrollbar is average 1em/16px width, remove it from thead width */ } table { width: 400px; }
如果tbody不显示滚动,因为内容小于heightor max-height,请随时设置滚动:overflow-y: scroll;。 演示 2
height
max-height
overflow-y: scroll;
<editS/updateS>2019 - 04/2021
<editS/updateS>
警告:此解决方案断开了 thead 和 tbody 单元格网格;这意味着在大多数实际情况下,您不会有您期望的表格中的单元格对齐方式。请注意,此解决方案使用 hack 使它们保持对齐:thead { width: calc( 100% - 1em ) }
无论如何,要设置滚动条,需要重置显示以摆脱表格布局(永远不会显示滚动条)。
通过/将其<table>变成网格也会在标题和可滚动部分之间留下空隙,请注意。(如果从 div 构建,则同上)display:grid``contents
<table>
display:grid``contents
overflow:overlay;尚未出现在 Firefox 中 (继续观看)
overflow:overlay;
position:sticky将需要一个父容器,它可以是滚动容器。如果您有几行和标题,请确保您thead可以保持粘性rowspan/colspan(它没有 chrome)。
position:sticky
thead
rowspan/colspan
到目前为止,仅通过 CSS 还没有完美的解决方案 。有几种平均方法可供选择,因此它适合您自己的表格(表格布局:固定;是..固定表格和列的宽度,但 javascript 可能用于重置这些值 => 退出纯 CSS)