tablescrollbar&headerfixed
有很多页面由于数据量过大,会产生横纵滚动条。为了便于使用者观看,我们要把表头固定一下。根据这个需求写了个demo来实现这个功能。
主要解决了几点问题:
1.table实现横纵滚动条
2.table表头固定
3.table列宽自适应
4.table内容不换行
主要代码块
css:
.table-scroll{
width:calc(100%-5px);
overflow-x:scroll;
white-space:nowrap;
}
.table-scrolltable{
table-layout:fixed;
width:calc(100%-10px);
background-color:darkseagreen;
}
.table-scrollthead{
display:table-row;
background-color:bisque;
}
.table-scrolltbody{
overflow-y:scroll;
overflow-x:hidden;
display:block;
height:calc(100vh-300px);
}
.table-scrollth,td{
width:160px;
overflow:hidden;
text-overflow:ellipsis;
min-width:160px;
border:1pxsolid#808080;
}
h4,h5{
color:cornflowerblue;
}
js:
$(function(){
$('.table-scroll').scroll(function(){
$('.table-scrolltable').width($('.table-scroll').width()
+$('.table-scroll').scrollLeft());
});
vartableTdWidths=newArray();
vartableWidth=0;
vartableTr0Width=0;
vartableThNum=0;
vartableTr1Width=0;
tableWidth=$('.table-scrolltable').css('width').replace('px','');
tableThNum=$('.table-scrolltr:eq(0)').children('th').length;if($('.table-scrolltr').length==1){//headeronlyif(tableWidth>tableTr0Width){
$('.table-scrolltr:eq(0)').children('th').each(function(i){
$(this).width(parseInt(($(this).css('width').replace('px',''))
+parseInt(Math.floor((tableWidth-tableTr0Width)/tableThNum)))+'px');
});
}
}else{//headerandbody
tableTr1Width=$('.table-scrolltr:eq(1)').css('width').replace('px','');
$('.table-scrolltr:eq(1)').children('td').each(function(i){
tableTdWidths[i]=$(this).css('width').replace('px','');
});
$('.table-scrolltr:eq(0)').children('th').each(function(i){if(parseInt($(this).css('width').replace('px',''))>
parseInt(tableTdWidths[i])){
tableTdWidths[i]=$(this).css('width').replace('px','');
}
});if(tableWidth>tableTr1Width){
//setallthtdwidth
$('.table-scrolltr').each(function(i){
$(this).children().each(function(j){
$(this).css('min-width',(parseInt(tableTdWidths[j])
+parseInt(Math.floor((tableWidth-tableTr1Width)/
tableThNum)))+'px');
});
});
}else{
//method1:setallthtdwidth
$('.table-scrolltr').each(function(i){
$(this).children().each(function(j){
$(this).css('min-width',tableTdWidths[j]+'px');
});
});
}
}
});
html:
<body>
<h4>完成效果:1.固定表头2.table横纵滚动条3.table列宽自适应4.table内容不换行</h4>
<pclass="table-scroll">
<table>
<thead>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
<th>title1</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>2</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>3</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>4</td>
<td>body1body1body1body1body1body1body1body1body1body1body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1body1body1body1body1body1body1body1body1body1body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>5</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>6</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>7</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>8</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>9</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>10</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>11</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>12</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>13</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>14</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>15</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>16</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>17</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>18</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>19</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>20</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>21</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>22</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>23</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>24</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>25</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>26</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>27</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>28</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>28</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>29</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
<tr>
<td>30</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
<td>body1</td>
</tr>
</tbody>
</table>
</p>
</body>
网上也有很多的例子,但是实现的效果不是想要的,自己工作需要做了一下,画面不好看,重点看效果,如有问题请指正!


本文转载自中文网


本文转载自中文网
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h55036.shtml