固定/冻结行表头、列表头的做法

栏目: JavaScript · 发布时间: 7年前

内容简介:本文只讲思路和注意事项。本文的固定行表头、列表头要比某些网站的复杂些,因为他们讲的是一个窗口中只有要滚动的表格,而我们是一个窗口中有很多内容,其他内容区域不动,只有表格滚动,同时表格的表头也固定。固定行表头相对来说要简单得多。

本文只讲思路和注意事项。本文的固定行表头、列表头要比某些网站的复杂些,因为他们讲的是一个窗口中只有要滚动的表格,而我们是一个窗口中有很多内容,其他内容区域不动,只有表格滚动,同时表格的表头也固定。

固定行表头

固定行表头相对来说要简单得多。

1、将表格放一个 div 中,为这个表格设置高度(如果想做随窗口而变化的自动高度,就用 position:absolute; bottom:xxxpx;……)。为这个表格设置 overflow-y:scroll。现在滚动的表格就出来了。

2、另起一个 table,和上面的 div 平级,table 仅含有表头。利用 CSS 将这个 table 和第 1 步的表格表头重叠。

3、完成了,但是还是有两个缺点,一是第 2 步的表格没有考虑第 1 步的滚动条占用的空间,二是窗口宽度变化时且 table 宽度是用的百分比就需要动态调整宽度,做法如下:

// 固定表头
$(".fixedRowContainer").width($(".dataTable").get(0).clientWidth);
$(window).resize(function () {
	// 固定表头的尺寸随窗口变化而变化
	$(".fixedRowContainer").width($(".dataTable").get(0).clientWidth);
});

固定行、列表头

这个要复杂些,因为行列表头还要随数据表的滚动条滚动而滚动。

除了固定行表头那种思路外,额外增加两个思路:

1、增加一个左上角的表头,它是固定不动的,也就是行表头和列表头的公共部分。

2、使行表头随数据表横向滚动而滚动,列表头随数据表纵向滚动而滚动,代码如下:

// 表头联动
$(".dataTableContainer").scroll(function () {
	var that = $(this);
	// 行表头联动
	$(".fixedRowContainer").get(0).scrollLeft = that.get(0).scrollLeft;
	// 列表头联动
	$(".fixedColumnContainer").get(0).scrollTop = that.get(0).scrollTop;
});

注意

注意单元格宽度、高度应该固定下来,否则容易导致表头和数据表单元格对不上。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法(英文版•第4版)

算法(英文版•第4版)

[美] Robert Sedgewick、[美] Kevin Wayne / 人民邮电出版社 / 2016-3 / 129.00元

本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4 版具体给出了每位程序员应知应会的50 个算法,提供了实际代码,而且这些Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。一起来看看 《算法(英文版•第4版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具