如何固定html表格头部,用css样式即可实现,操作简便、代码简单
首先创建一个表格
表头:
<div class="table_box">
<table cellspacing="0" cellpadding="0">
<thead>
<tr>
<th><input type="checkbox" class="thItem" onclick="fn(this)"></th>
<th>姓名</th>
<th>岗位工资</th>
<th>岗位级别</th>
<th>性别</th>
<th>生日</th>
<th>手机号</th>
<th>身份证号</th>
<th>项目名称</th>
<th>公司名称</th>
<th>政治面貌</th>
<th>籍贯</th>
<th>学历</th>
<th>创建时间</th>
<th>员工状态</th>
<th>用工形式</th>
<th>现合同到期时间</th>
<th>现合同期限</th>
<th>银行卡卡号</th>
<th>工资卡开户行</th>
<th>操作</th>
</tr>
</thead>
<tbody id="tb">
</tbody>
</table>
</div>
tbody部分直接使用js,意思是使用循环在表格的主体部分加入了表格标签,不用大量的去复制空格子(其实就是up比较懒 (o▽`o) )
<script>
let inp = document.getElementById("tb")
let str = ""
for(let i = 0 ; i < 20 ; i++){
str += `<tr>
<td><input type="checkbox" class="thItem""></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>`
}
inp.innerHTML = str
</script>
添加基本的css样式:
<style>
.table_box{
width: 1632px;
overflow: scroll;
}
table{
width: 3000px;
}
td,th{
border: 1px solid #777;
width: 200px;
}
td{
height: 30px;
text-align: center;
}
</style>
效果:
下面添加css样式,给需要固定的地方加粘性定位sticky
使用伪类选择器进行选定元素:
/* 第一列 */
thead>tr>th:first-child{
position: sticky;
left: 0;
background-color: rgb(240, 240, 240);
}
tbody>tr>td:first-child{
position: sticky;
left: 0;
background-color: rgb(240, 240, 240);
}
/* 第二列 */
thead>tr>th:nth-child(2){
position: sticky;
left: 144px;
background-color: rgb(240, 240, 240);
}
tbody>tr>td:nth-child(2){
position: sticky;
left: 144px;
background-color: rgb(240, 240, 240);
}
/* 最后一列 */
thead>tr>th:last-child{
position: sticky;
right: 0;
background-color: rgb(240, 240, 240);
}
tbody>tr>td:last-child{
position: sticky;
right: 0;
background-color: rgb(240, 240, 240);
}
效果:
完整代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style>
.table_box{
width: 1632px;
overflow: scroll;
}
table{
width: 3000px;
}
td,th{
border: 1px solid #777;
width: 200px;
}
td{
height: 30px;
text-align: center;
}
/* 第一列 */
thead>tr>th:first-child{
position: sticky;
left: 0;
background-color: rgb(240, 240, 240);
}
tbody>tr>td:first-child{
position: sticky;
left: 0;
background-color: rgb(240, 240, 240);
}
/* 第二列 */
thead>tr>th:nth-child(2){
position: sticky;
left: 144px;
background-color: rgb(240, 240, 240);
}
tbody>tr>td:nth-child(2){
position: sticky;
left: 144px;
background-color: rgb(240, 240, 240);
}
/* 最后一列 */
thead>tr>th:last-child{
position: sticky;
right: 0;
background-color: rgb(240, 240, 240);
}
tbody>tr>td:last-child{
position: sticky;
right: 0;
background-color: rgb(240, 240, 240);
}
</style>
</head>
<body>
<div class="table_box">
<table cellspacing="0" cellpadding="0">
<thead>
<tr>
<th><input type="checkbox" class="thItem" onclick="fn(this)"></th>
<th>姓名</th>
<th>岗位工资</th>
<th>岗位级别</th>
<th>性别</th>
<th>生日</th>
<th>手机号</th>
<th>身份证号</th>
<th>项目名称</th>
<th>公司名称</th>
<th>政治面貌</th>
<th>籍贯</th>
<th>学历</th>
<th>创建时间</th>
<th>员工状态</th>
<th>用工形式</th>
<th>现合同到期时间</th>
<th>现合同期限</th>
<th>银行卡卡号</th>
<th>工资卡开户行</th>
<th>操作</th>
</tr>
</thead>
<tbody id="tb">
</tbody>
</table>
</div>
<script>
let inp = document.getElementById("tb")
let str = ""
for(let i = 0 ; i < 20 ; i++){
str += `<tr>
<td><input type="checkbox" class="thItem""></td>
<td>张三</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>备注</td>
</tr>`
}
inp.innerHTML = str
</script>
</body>
</html>
此文所实现的效果为纯css,适合新手,操作简单,如果使用js实现此效果的话会更加美观、简便,以后有机会还会一同分享有关js的实现方法 (▽`)
谢谢观看(/≧▽≦)/