table表头固定,内容滚动

1、第一种方法
通过属性overflow属性控制滚动,主要是写一个div设置固定高度,内容超出高度出现滚动条,overlay主要控制滚动条不占位置。注意:此写法,浏览器兼容好。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			th {
				border: 1px solid #eee;
				color: #333;
				font-size: 16px;
				line-height: 36px;
				background: #e5e5e5;
			}
			table {
				border-collapse: collapse;
				width: 100%;
			}
			td {
				border: 1px solid #eee;
				font-size: 14px;
				line-height: 32px;
				height: 32px;
			}
			.table-head {
				color: red;
				height: 36px;
			}
			.table-body {
				width: 100%;
				max-height: 200px;
				overflow: overlay;
			}
			.table-head table,
			.table-body table {
				width: 100%;
			}
		</style>
	</head>
	<body>
		<div style="padding: 20px;">
			<div class="table-head">
				<table>
					<thead>
						<th >测试111</th>
						<th >测试111</th>
						<th >测试111</th
					</thead>
				</table>
			</div>
			<div class="table-body">
				<table>
					<tbody id="tbody">
						<tr>
							<td>111</td>
							<td>111</td>
							<td>111</td>
						</tr>
						<tr>
							<td>222</td>
							<td>222</td>
							<td>222</td>
						</tr>
						<tr>
							<td>333</td>
							<td>333</td>
							<td>333</td>
						</tr>
						<tr>
							<td>444</td>
							<td>444</td>
							<td>444</td>
						</tr>
						<tr>
							<td>555</td>
							<td>555</td>
							<td>555</td>
						</tr>
						<tr>
							<td>555</td>
							<td>555</td>
							<td>555</td>
						</tr>
						<tr>
							<td>555</td>
							<td>555</td>
							<td>555</td>
						</tr>
						<tr>
							<td>555</td>
							<td>555</td>
							<td>555</td>
						</tr>
					</tbody>
				</table>
			</div>
		</div>
	</body>
</html>

2、第二种方法
通过 position: sticky属性控制滚动,当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。注意:低版本的浏览器不兼容此写法。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			th {
				border: 1px solid #eee;
				color: #333;
				font-size: 16px;
				line-height: 36px;
				background: #e5e5e5;
			}

			table {
				border-collapse: collapse;
				width: 100%;
			}

			td {
				border: 1px solid #eee;
				font-size: 14px;
				line-height: 32px;
				height: 32px;
			}
			.float-title{
	            position: sticky;
	            top: 0px;
	        }
		</style>
	</head>
	<body>
		<div style="padding: 20px;">
			<table>
				<thead class="float-title">
					<th>测试111</th>
					<th>测试111</th>
					<th>测试111</th
				</thead>
				<tbody id="tbody">
					<tr>
						<td>111</td>
						<td>111</td>
						<td>111</td>
					</tr>
					<tr>
						<td>222</td>
						<td>222</td>
						<td>222</td>
					</tr>
					<tr>
						<td>333</td>
						<td>333</td>
						<td>333</td>
					</tr>
					<tr>
						<td>444</td>
						<td>444</td>
						<td>444</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
					<tr>
						<td>555</td>
						<td>555</td>
						<td>555</td>
					</tr>
				</tbody>
			</table>
		</div>
	</body>
</html>


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果想要实现表头固定内容滚动的效果,可以使用CSS中的position属性和JavaScript中的scroll事件来实现。具体的实现步骤如下: 1. 首先,将表格的表头和表格内容分别放入两个div中,并设置它们的class为"fixed-header"和"scrollable-content"。 2. 设置.fixed-header的position为fixed,top为0,left为0,z-index为1,使其固定在屏幕顶部。 3. 设置.scrollable-content的overflow为auto,并且设置高度和宽度。同时,设置一个padding-top值,使得滚动条不会遮挡住表格的第一行。 4. 在JavaScript中,监听.scrollable-content的scroll事件,并且在事件触发时,将.fixed-header的left值设置为负的.scrollable-content的scrollLeft值,使表头随着内容滚动滚动。 下面是一个示例代码: HTML代码: ``` <div class="fixed-header"> <table> <thead> <tr> <th>表头1</th> <th>表头2</th> <th>表头3</th> </tr> </thead> </table> </div> <div class="scrollable-content"> <table> <tbody> <tr> <td>内容1</td> <td>内容2</td> <td>内容3</td> </tr> ... </tbody> </table> </div> ``` CSS代码: ``` .fixed-header { position: fixed; top: 0; left: 0; z-index: 1; } .scrollable-content { overflow: auto; height: 200px; width: 100%; padding-top: 50px; /*表头高度*/ } ``` JavaScript代码: ``` $('.scrollable-content').on('scroll', function(){ $('.fixed-header').css({ 'left': -$(this).scrollLeft() }); }); ``` 上面的代码中,使用jQuery的on方法监听.scrollable-content的scroll事件,并且在事件触发时,将.fixed-header的left值设置为负的.scrollable-content的scrollLeft值。 需要注意的是,如果表格的表头内容列数不一致,可能会导致表头内容位置错乱的问题。如果出现这种情况,可以将表格的表头内容分别放到两个table中,并设置它们的宽度和列数相同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello.鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值