纯css 冻结table表头

今天想将一个前台页面设计的一个小东西分享一下,那就是平时我们设计表格的时候,通常都想将表格的头部进行固定,而表格的body部分能够进行滚动的效果,这个实现起来相对简单的,对于初学div+css布局的同学来说,还是有些帮助的。

这个表格很宽,可以左右滑动。

HTML部分

<div style="overflow:scroll;">
		<div style="width:8000px;position:relative;">
			<div id="mainTableBox" style="width: 8000px;height:400px;overflow-y: auto;">
			    <table style="width: 7980px" id="mainTable" border="0" width="90%" cellspacing="0"  cellpadding="0">
			    	<thead>
			    		<tr>
			    			<th rowspan="3" colspan="12">基本信息</th>
			    			<th rowspan="4" style="width: 2.5%">预领月数</th>
			    			<th colspan="25" rowspan="1">领款单明细</th>
			    			<th rowspan="4" style="width: 1.94%">备注</th>
			    			<th rowspan="4" colspan="2" style="width: 3.88%">操作</th>
			    		</tr>
			    		<tr>
			    			<th colspan="10">领款合计</th>
			    			<th colspan="9">应扣除合计</th>
			    			<th colspan="3">应领款合计</th>
			    			<th colspan="3">实际领款金额</th>
			    		</tr>
			    		<tr>
			    			<th rowspan="2" style="width: 2.5%">生活津贴</th>
			    			<th rowspan="2" style="width: 3.75%">一次性派遣补助</th>
			    			<th rowspan="2" style="width: 1.9%">123</th>
			    			<th rowspan="2" style="width: 3.75%">区补贴</th>
			    			<th colspan="3" style="width: 3.75%">应报销项</th>
			    			<th colspan="3">合计</th>
			    			<th colspan="3">国外教学</th>
			    			<th colspan="3">其他收入</th>
			    			<th colspan="3" >合计</th>
			    			<th colspan="3">合计</th>
			    			<th colspan="3">合计</th>
			    		</tr>
			    		<tr>
			    			<th style="width: 1.35%" rowspan="1">序号</th>
			    			<th style="width: 1.35%" rowspan="1">状态</th>
			    			<th style="width:2.5%" rowspan="1">岗位类型</th>
			    			<th style="width: 1.35%" rowspan="1">姓名</th>
			    			<th style="width: 1.89%" rowspan="1">出生地</th>
			    			<th style="width: 2.5%" rowspan="1">123</th>
			    			<th style="width: 2.5%" rowspan="1">456</th>
			    			<th style="width: 3.75%" rowspan="1">预计赴任时间</th>
			    			<th style="width: 3.75%" rowspan="1">预计离任时间</th>
			    			<th style="width: 1.35%" rowspan="1">任期</th>
			    			<th style="width: 6.5%" rowspan="1">个人提供生活津贴(人民币/月)</th>
			    			<th style="width: 6.5%" rowspan="1">公司提供生活津贴(人民币/月)</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>
			    			
			    		</tr>
			    	</thead>
			    	<tbody>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    			
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>
			    		<tr>
			    			<td colspan="41">data</td>
			    		</tr>

			    		

			    		<tr>
			    			<td>合计	</td>
			    			<td colspan="40"></td>
			    			
			    		</tr>
			    		<tr style="background: #fff">
			    			<td>备注</td>
			    			<td colspan="49"  style="text-align: left;">
			    				<textarea name="" rows="5" style="width:500px"></textarea>
			    			</td>
			    		</tr>
			    		


			    	</tbody>
			    </table>
		    </div>
		    <table style="width: 7980px" id="headTable" class="headTable" border="0" width="90%" cellspacing="0"  cellpadding="0">
			    <thead>
			    		<tr>
			    			<th rowspan="3" colspan="12">基本信息</th>
			    			<th rowspan="4" style="width: 2.5%">预领月数</th>
			    			<th colspan="25" rowspan="1">领款单明细</th>
			    			<th rowspan="4" style="width: 1.94%">备注</th>
			    			<th rowspan="4" colspan="2" style="width: 3.88%">操作</th>
			    		</tr>
			    		<tr>
			    			<th colspan="10">领款合计</th>
			    			<th colspan="9">应扣除合计</th>
			    			<th colspan="3">应领款合计</th>
			    			<th colspan="3">实际领款金额</th>
			    		</tr>
			    		<tr>
			    			<th rowspan="2" style="width: 2.5%">生活津贴</th>
			    			<th rowspan="2" style="width: 3.75%">一次性派遣补助</th>
			    			<th rowspan="2" style="width: 1.9%">安家费</th>
			    			<th rowspan="2" style="width: 3.75%">艰苦地区补贴</th>
			    			<th colspan="3" style="width: 3.75%">其他应报销项</th>
			    			<th colspan="3">合计</th>
			    			<th colspan="3">国外教学</th>
			    			<th colspan="3">其他收入</th>
			    			<th colspan="3" >合计</th>
			    			<th colspan="3">合计</th>
			    			<th colspan="3">合计</th>
			    		</tr>
			    		<tr>
			    			<th style="width: 1.35%" rowspan="1">序号</th>
			    			<th style="width: 1.35%" rowspan="1">状态</th>
			    			<th style="width:2.5%" rowspan="1">岗位类型</th>
			    			<th style="width: 1.35%" rowspan="1">姓名</th>
			    			<th style="width: 1.89%" rowspan="1">出生地</th>
			    			<th style="width: 2.5%" rowspan="1">任教国家</th>
			    			<th style="width: 2.5%" rowspan="1">地区类别</th>
			    			<th style="width: 3.75%" rowspan="1">预计赴任时间</th>
			    			<th style="width: 3.75%" rowspan="1">预计离任时间</th>
			    			<th style="width: 1.35%" rowspan="1">任期</th>
			    			<th style="width: 6.5%" rowspan="1">外方提供生活津贴(人民币/月)</th>
			    			<th style="width: 6.5%" rowspan="1">我办提供生活津贴(人民币/月)</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>

			    			<th style="width: 1.94%">美元</th>
			    			<th style="width: 1.94%">人民币</th>
			    			<th style="width: 1.94%">其他金额</th>
			    			
			    		</tr>
			    	</thead>	
			</table>
	    </div>
    </div>

CSS部分

* {
    	margin:0;
    	padding: 0;
    }

    table {
    	background: #dfdfdf;
    }
    table, th,td {
    	vertical-align: middle;
    	border-collapse:collapse;
    }
     th {
     	border: 1px solid #fff;
     	height: 40px;
     	color: #fff;
     	text-align: center;
     	border-collapse:collapse;
     	background: #1a61a3;
     }
     td {
     	padding: 5px 0;
     	text-align: center;
     	border: 1px solid #eee;
     	height: 40px;
     }

     .headTable {
     	width: 8000px;
     	position: absolute;
     	top: 0;
     }

这个功能主要思路:

1.两个table表格,第二个table表格作为冻结的表头,用绝对定位absolute(用固定定位position:fixed,表格左右滑动时表头不动)。

2.就是表格宽度比外层div的宽度少20像素,这样为了让出一个竖向滚动条的宽度。

3.设置两个表格th的宽度,保证两个表格每个单元格宽度一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值