在HTML中固定表格表头的简单方法

news2024/9/21 12:38:36

在HTML中,表格元素自身无法提供滚动以及固定表头的配置。借助第三方工具(如jQuery的表头固定插件)或者结合JavaScrip,是可以实现表格的表头固定的,除此之外,本文还想讨论一种更简单的方式来实现。

从思路上说,固定表头可以考虑将表格分成表头及表体两部分,其中表头就是一个普通表格,表体则用一个div包裹起来并通过css属性“overflow-y: scroll”提供滚动功能,即实现了表体的滚动。只要将表头与表体的框线对齐,那么就实现了固定表头滚动表体的效果。

下面是实现这个效果的动图:

上面这个复杂表格固定表头滚动效果实现方法如下:

1、用一个div作为表格容器。

2、表格容器上部为一个表格,内容即表头内容。为了与表体对齐,表头的宽度应该比容器略小,以让出表体部分滚动条的宽度。

3、表格容器的下部为一个容纳表体的div,这个div具有css属性“overflow-y: scroll”,并且必须设置css属性height的值。

4、表格的内容放在表体容器中。

5、表头和表体的符合规定的位置插入<colgroup>标签,按表头的最大列数设置各列的宽度,且表头与表体的设置值完全相同,这样就可以实现表头与表体框线基本对齐。

具体代码如下,其中有详尽注释:

<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8" />
	<title>固定表头滚动表格示例</title>
	<style type="text/css">
        //表格的单双行背景色略有差异,非必须
		table tr:nth-child(2n+1) {
			background-color: #f2f2f2;
		}
        //表格框线及单元格内容对齐方式的设置,非必须
		table tr td {
			border: 1px solid red;
			text-align: center;
		}
        //表格的框线折叠起来,以免以双实线的样式展示,非必须
		table{
			border-collapse:collapse;
		}
		
	</style>
</head>

<body>

    <!--表格容器,这里限定了容器占父元素宽度的比例,非必须-->
	<div class='table_container' style="width:80%;">
        <!--表头,宽度不应充满表格容器以便于与表体右边框线的对齐,98.6%是经验数据-->
		<table style='width:98.6%;'>
                <!--表头第二行有七个单元格,下面规定七个单元格的宽度。
                    由于第二行后五个单元格是平均分布列的,所以也可以将后面五个单元格
                    简写为一个<col  />标签,但框线对齐误差可能会比较明显一点。这是
                    这个效果必须提供的配置,并且下面表体部分要与这里的配置完全相同-->
				<colgroup>
					<col style="width: 10%;" />
					<col style="width: 34%;" />
					<col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
				</colgroup>
				<thead>
					<tr>
						<td rowspan="2"><b>编号</b></td>
						<td rowspan="2"><b>资料名称</b></td>
						<td colspan="7"><b>责任部门(岗位)</b></td>
					</tr>
					<tr>
						<td><b>技术</b></td>
						<td><b>质量</b></td>
						<td><b>工程</b></td>
						<td><b>商务</b></td>
						<td><b>物资</b></td>
						<td><b>试验</b></td>
						<td><b>测量</b></td>
					</tr>
				</thead>
			</table>
         <!--表体容器,提供滚动条,必须-->
		<div style="height: 300px;overflow-y: scroll;width:100%;">
            <!--表体应当充满父容器-->
			<table style='width:100%;'>
                 <!--与表头完全相同的列宽配置,为对齐框线所必须-->
				<colgroup>
					<col style="width: 10%;" />
					<col style="width: 34%;" />
					<col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
                    <col  style="width: 8%;" />
				</colgroup>
				<tbody>
					<tr>
						<td>C1</td>
						<td>施工管理资料</td>
						<td>●</td>
						<td>●</td>
						<td>●</td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 施工检测试验计划<br>分项工程和检验批的划分方案<br>检测设备检定证书登记台账</td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 企业资质证书及相关专业人员岗位证书<br>特种作业人员证书复印件<br>分包单位资质报审表<br>分包资质证书及相关专业人员岗位证书</td>
						<td></td>
						<td></td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 施工日志<br>工程开工报审表<br>监理工程师通知回复单</td>
						<td></td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 施工现场质量管理检查记录<br>建设工程质量事故调查、勘察记录<br>建设工程质量事故报告书</td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td>C2</td>
						<td>施工技术资料</td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 分项工程技术交底记录</td>
						<td></td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td>C3</td>
						<td>施工测量记录</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td>●</td>
					</tr>
					<tr>
						<td>C4</td>
						<td>施工物资资料</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td>C5</td>
						<td>施工记录</td>
						<td></td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td>C6</td>
						<td>施工试验资料</td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td>●</td>
						<td></td>
					</tr>
					<tr>
						<td>C7</td>
						<td>施工质量验收记录</td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 分项工程质量验收记录<br>分部(子分部)工程验收记录</td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td>C8</td>
						<td>竣工验收资料</td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
					<tr>
						<td colspan="2">其中: 单位工程质量控制资料核查记录<br>单位工程安全和功能检验资料核查及主要功能抽查记录<br>单位工程观感质量检查记录</td>
						<td></td>
						<td>●</td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
						<td></td>
					</tr>
				</tbody>
			</table>
		</div>
	</div>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【初阶数据结构】详解顺序表(下)(顺序表的代码实现)

文章目录 前言1. 项目文件的配置1.1 顺序表的项目的文件配置(仅供参考) 2. 顺序表的代码实现2.1 SeqList.h&#xff1a;2.2 SeqList.c:2.2.1 顺序表初始化的代码实现&#xff1a;2.2.2 顺序表销毁的代码实现&#xff1a;2.2.3 顺序表尾插数据的代码实现&#xff1a;2.2.4 顺序表…

【国赛必看!】数学建模python基础教学及常用算法代码包分享

一、内容介绍 Python在各个编程语言中比较适合新手学习&#xff0c;Python解释器易于扩展&#xff0c;可以使用C、C或其他可以通过C调用的语言扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库&#xff0c;提供了适用于各个主要系统…

opencv-python图像增强六:低光照增强

文章目录 一&#xff1a;简介二、低光照图像增强方案&#xff1a;三、算法实现步骤3.1 CLAHE直方图均衡化&#xff1a;3.2 伽马变换&#xff1a;3.3 对亮度通道做伽马变换 四&#xff1a;整体代码实现五&#xff0c;效果&#xff1a; 一&#xff1a;简介 低光照图像增强是一种…

Flink 常见问题汇总:反压积压,checkpoint报错,窗口计算,作业报错,无产出,流批不一致,调优等。

Flink 常见问题汇总 0 如何分析日志0.1作业内部重启异常&#xff0c; 作业正常运行0.2 作业内部重启&#xff0c; 但作业已经手动 kill 整个 yarn-application0.3 作业失败&#xff0c;整个 yarn application 结束运行 1 Flink 作业积压排查流程及解决思路1 反压原因2 反压的危…

Windows下搭建Telegraf+Influxdb+Grafana(详解一)

InfluxDB&#xff08;时序数据库&#xff09;&#xff0c;常用使用场景&#xff1a;监控数据统计。 grafana&#xff0c;用作监控页面的前端展示。 telegraf&#xff0c;数据采集器。 所有的安装包都上传到网盘 链接: https://pan.baidu.com/s/1Lv6UnfueK7URx7emAatoYg 提取…

oracle 数据中lsnrctl 是干啥的

突然发现lsnrctl stop 之后&#xff0c;依然可以启动数据库 就感觉怪怪的&#xff0c;一直以为这个是数据库的守护进程&#xff0c;原来不是。。。。 lsnrctl 是 Oracle 监听器控制实用程序的命令行界面工具&#xff0c;用于管理 Oracle Net 服务监听器。监听器是 Oracle 网络…

map和set的应用

map、set 1. 序列式和关联式容器2.set和multiset2.1 构造2.2 迭代器2.3 修改 3. map和multimap3.1 map3.2. multimap 1. 序列式和关联式容器 序列式容器&#xff1a;比如&#xff1a;vector、list、deque、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为…

Vue3+Echarts+饼图环形图

记得给容器宽高 <div id"leftChartguawang" style"height: 28vh"></div> 配置函数 const leftChartguawang () > {const chartBox echarts.init(document.getElementById(leftChartguawang))let datas [[{ name: 居民节能建筑, value…

SmartEDA电路仿真软件革新力作:重塑电子设计界,揭秘其爆红背后的秘密武器!

在这个日新月异的科技时代&#xff0c;每一场技术革新都是推动行业进步的强劲动力。而在电子设计领域&#xff0c;一款名为SmartEDA的电路仿真软件正以前所未有的姿态&#xff0c;颠覆传统设计模式&#xff0c;成为众多工程师和设计师争相追捧的新宠。今天&#xff0c;就让我们…

硬核详解FutureTask设计与实现

写在文章开头 最近看到一篇比较不错的FutureTask实践,于是对FutureTask源码进行了研究,而本文将从实践和源码两个角度分析FutureTask的设计与实现思路,希望对你有帮助。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源项目 …

从零开始搭建 EMQX 集群压测框架

从零开始搭建 EMQX 集群压测框架 架构 在设计以EMQX为中心的MQTT消息队列集群压力测试框架时&#xff0c;我们采用微服务架构模式。EMQX作为消息队列的核心&#xff0c;负责处理MQTT协议的消息发布和订阅。Nginx作为EMQX的反向代理&#xff0c;负责负载均衡和SSL/TLS终端。MQT…

农业上的目标跟踪论文汇总

文章目录 2022Multi-object tracking using Deep SORT and modified CenterNet in cotton seedling counting (Computers and Electronics in Agriculture)A novel apple fruit detection and counting methodology based on deep learning and trunk tracking in modern orcha…

模型部署 - docker

docker简介 Docker 是一种开源的容器化平台&#xff0c;允许开发者将应用程序及其依赖项打包到一个标准化的单元中&#xff0c;称为“容器”。这些容器可以在任何支持 Docker 的系统上运行&#xff0c;无需担心环境差异。 为什么需要 Docker&#xff1f; 在传统的开发中&…

ECharts数据可视化 数据集与事件 入门基础知识【2】

echarts一个基于 JavaScript 的开源可视化图表库。其有丰富的图表类型、强大的渲染引擎、专业多维度的数据分析、灵活配置的可视化设计。关于echarts的下载安装以及在项目中使用的基础知识我们前面已经回顾过了&#xff1a; ECharts 数据可视化 入门基本知识 下载安装常用的图表…

计数排序以及排序总结

技数排序 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。 思路&#xff1a; 统计相同元素出现次数根据统计的结果将序列回收到原来的序列中 void CountSort(int* arr, int n) {//寻找最大、最小值int maxarr[0], min arr[0];for (int i 0; i < n;…

【网络】私有IP和公网IP的转换——NAT技术

目录 引言 NAT工作机制​编辑 NAT技术的优缺点 优点 缺点 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 公网被子网掩码划分为层状结构&#xff0c;一个公网IP的机器又可以用很多私有IP搭建内网。在日常生活场景中用的都是私有IP&#xff0c;例如手机&#xff0c;…

单元训练05:独立按键的基本操作

可以正常运行的&#xff1a; #include "stc15f2k60s2.h"#define LED(x) \{ \P0 x; \P2 P2 & 0x1f | 0x80; \P2 & 0x1f; \}void Timer0_Init(void) // 1毫秒12.000MHz {AUXR | 0x80; …

spring boot 发送微信小程序订阅消息

首先我们需要订阅一个消息&#xff1a; 订阅教程本文章并未提起&#xff0c;感兴趣的同学自行百度。 我们可以看到订阅消息中【消息内容】有很多参数&#xff0c;我们在发送消息时就需要将这些参数进行填充&#xff0c;当然填充的时候要注意格式&#xff0c;如果格式不对还是会…

python字符串方法,格式化字符串format,字符串的编码和解码,字符串的拼接

字符串–不可变序列 1.字符串方法 2.格式化字符串format&#xff0c;通过格式化字符串解决不同数据类型链接时候报错的问题例如用连接字符串和int就会报错 ①占位符需要注意格式print ( ’ 结果:%s %d ’ % (user_inp,ans))&#xff0c;注意需要给输出语句“”,后边需要有%。…

HarmonyOS应用开发者高级认证(一)

1、依次点击A、B、C、D四个按钮&#xff0c;其中不会触发UI刷新的是&#xff1a; 答案&#xff1a; Button("C").onClick(() > {this.nameList[0].name "Jim"})分析&#xff1a;直接更新非一级数据不会触发UI刷新 2、如果要实现Row组件内的子元素均匀…