我也是做了两次的table表格的thead固定,tbody展示出滚动条,第一次因为是存在有表头合并的原因没有做出来完好的效果,第二次是不仅有表头的合并,还有tbody中的rowspan的合并
-
第一种:针对存在有表头合并的thead固定tbody展示滚动条
效果图:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
.table {
width: 100%;
border-top: 1px solid #DCDFE6;
border-right: 1px solid #DCDFE6;
border-spacing: 0;
/*去掉单元格间隙*/
}
.table tbody {
width: 100%;
}
.table thead,
tbody tr { //关键代码行--tbody滚动条展示
display: table;
width: 100%;
table-layout: fixed;
}
.table tbody { //关键代码行--tbody滚动条展示
display: block;
height: 300px;
overflow-y: scroll;
}
.table .borderNone {
border-left: none;
}
.table>thead>tr {
background-color: #f5f7fa;
}
.table td {
word-wrap: break-word;
font-size: 20px;
text-align: center;
padding: 5px 10px;
border-bottom: 1px solid #DCDFE6;
border-left: 1px solid #DCDFE6;
}
</style>
</head>
<body>
<div class="table-container">
<table class="table">
<thead>
<thead style="font-weight:bolder">
<tr>
<td rowspan="3" style="min-width: 50px;font-size:18px;">序号</td>
<td rowspan="3" style="min-width: 150px;font-size:18px;">补贴</td>
<td colspan="6" style="font-size:18px;">项目</td>
<td colspan="4" style="font-size:18px">占比</td>
<td colspan="4" style="font-size:18px">住院</td>
</tr>
<tr>
<td rowspan="2" style="min-width: 100px;font-size:18px;">区数</td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">总数</td>
<td class="borderNone" colspan="2"> </td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">职数</td>
<td class="borderNone" colspan="1"> </td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">班数</td>
<td class="borderNone" colspan="1"> </td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">人员</td>
<td class="borderNone" colspan="1"> </td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">月份</td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">项目</td>
<td rowspan="2" style="min-width: 100px;font-size:18px;">单位</td>
<td class="borderNone" colspan="1"> </td>
</tr>
<tr>
<td style="min-width: 70px;font-size:18px;">金额</td>
<td style="min-width: 100px;font-size:18px;">人次</td>
<td style="min-width: 60px;font-size:18px;">占比</td>
<td style="min-width: 70px;font-size:18px;">住院</td>
<td style="min-width: 60px;font-size:18px;">补贴</td>
<td style="min-width: 60px;font-size:18px;">占比</td>
</tr>
</thead>
</thead>
<tbody>
//tr可以多复制几行看一下效果
<tr>
<td>合并单元格</td>
<td>内容1</td>
<td>内容2</td>
<td>合并单元格</td>
<td>内容1</td>
<td>内容2</td>
<td>合并单元格</td>
<td>内容1</td>
<td>内容2</td>
<td>合并单元格</td>
<td>内容1</td>
<td>内容2</td>
<td>合并单元格</td>
<td>内容1</td>
<td>内容2</td>
<td>合并单元格</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
第一种的方法只适合tbody中没有rowspan的合并方式,如果tbody中只有colspan合并没有rowspan合并使用第一种方法就足够了,但是如果你的tbody中存在rowspan的合并,那么你就只能使用第二种方法了
第二种:针对存在有表头合并的thead,tbody中有rowspan的合并, 固定tbody展示滚动条
效果图:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
/* 这个是控制tbody中的高度展示 */
.table-container {
height: 200px;
overflow-y: auto;
}
table {
width: 100%;
table-layout: fixed;
border-collapse: collapse;
}
thead {
position: sticky;
top: 0;
background-color: #fff;
}
th, td {
padding: 8px;
border: 1px solid #000;
}
</style>
</head>
<body>
<div class="table-container">
<table>
<thead>
<tr>
<th>表头1</th>
<th>表头2</th>
<th>表头3</th>
</tr>
</thead>
<tbody>
//将两个tr为一组,多复制几个看看效果展示
<tr>
<td rowspan="2">合并单元格</td>
<td>内容1</td>
<td>内容2</td>
</tr>
<tr>
<td>内容3</td>
<td>内容4</td>
</tr>
<tr>
<td rowspan="2">合并单元格</td>
<td>内容1</td>
<td>内容2</td>
</tr>
<tr>
<td>内容3</td>
<td>内容4</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
这种展示方式是有一点问题的,滚动条往上滚动时,thead的不管是合并的还是没合并的都边框线会消失,但是总体效果是实现的,如果比较介意这个地方,可以暂时不使用此方法