今天想将一个前台页面设计的一个小东西分享一下,那就是平时我们设计表格的时候,通常都想将表格的头部进行固定,而表格的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的宽度,保证两个表格每个单元格宽度一致。