关于固定表头的一种方式

tech2023-05-25  100

关于固定表头的一种方式

对于固定表头可以通过CSS的固定定位来实现 position: fixed; 但是一旦表头被固定定位修饰之后会带来两个问题: 1.表体不依据表头定位,而是通过上一层div进行定位,导致表体中前面的部分数据会被表头遮挡。 2.表头的长度不受标准文档流约束,导致表头与表体的单元格不对齐。 解决问题1: 我们可以通过在表体上方添加一个与表头高度相等的一行,来将表体挤下来。而表头将这新添加的一行覆 盖 ,达到固定表头的效果。 解决问题2: 我们可以获取表体每一个单元格的长度,通过js来修改表头单元格的长度。来达到表头与表体单元格对其 的效果。

css:

<style> thead { /* 固定表头 */ position: fixed; /* 使表头部分高于表体 */ z-index: 2; } /* 空白行,用于填充表头脱离文档流之后的区域 */ #spacetr { position: relative; z-index: 1; } tbody { position: relative; z-index: 1; } </style>

js:

$(function(){ $("#spacetr").css("height", $("thead").css("height")); $("#thNumber").css("width", $("#tdNumber").css("width")); $("#thUserValue").css("width", $("#tdUserValue").css("width")); $("#thTime").css("width", $("#tdTime").css("width")); $("#thEnergy").css("width", $("#tdEnergy").css("width")); });

jsp:

<table> <thead> <tr> <td id="thNumber">序号</td> <td id="thUserValue">姓名</td> <td id="thTime">日期</td> <td id="thEnergy">金额</td> </tr> </thead> <tr id="spacetr"> <td id="tdNumber"></td> <td id="tdUserValue"></td> <td id="tdTime"></td> <td id="tdEnergy"></td> </tr> <tbody> <tr> <td>.....</td> <td>.....</td> <td>.....</td> <td>.....</td> </tr> </tbody> </table>

这样就可以实现表头固定的需求了,如果大神们有更好的实现方式,可以指点一哈。

最新回复(0)