响应式表格之固定表头的简单实现

内容摘要
数据展示时,表头的固定,可以有更好的可读性。
一、实现方式:


1、定义2个表格,一个absolute固定


<div class="table1-wapper">
<table width="100%" cellpadding="0" cell
文章正文

数据展示时,表头的固定,可以有更好的可读性。

一、实现方式:

1、定义2个表格,一个absolute固定

1
2
3
4
5
6
7
8
9
10
<div class="table1-wapper">
  <table width="100%" cellpadding="0" cellspacing="0" id="table1">
   <tr><th><div>序号</div></th><th><div>股票名称</div></th>...</tr>
    <tr>...</tr>
 </table>
</div>
 <div class="fixed-table1-wapper">
 <table width="100%" cellpadding="0" cellspacing="0" id="fixed-table1">
 </table>
</div>

2、表1<th>复制,并插入表2

1
2
var th_new=$("#table1 tr").eq(0).clone();
$("#fixed-table1").append(th_new);

3、resize()方法,实时获取表1各列<th>宽度

1
2
3
4
5
6
7
function trResize(){
  $("#fixed-table1 th").each(function(){
  var num=$(this).index();
  var th_width=$("#table1 th").eq(num).width();
  $(this).css("width",th_width+"px");
  });
}

4、页面过小时,表格滚动带表头滚动

1
2
3
4
$(".table1-wapper").scroll(function(){
  var scroll=-$(this).scrollLeft()
  $(".fixed-table1-wapper").css("left",scroll+"px");
});

二、注意细节:

1、宽度自适应、去除单元格间隙:
<table width="100%" cellpadding="0" cellspacing="0" ></table>

2、表格线:
直接<td>添加border,会出现边线重合;添加属性:border-collapse: collapse;

3、td宽度:

控制第一行宽度即可 <td width="70"></td> / <td width="20%"></td>

4、奇偶行颜色不同:

css: #table1 tr:nth-child(2n){background-color:#ccc;} ie7兼容性问题

jquery: $("#table1 tr:even").css("background-color","#ccc");

以下为完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表格整理</title>
<link rel="stylesheet" type="text/css" href="css/basic.css">
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<style type="text/css">
html{overflow:auto;}
.table-wapper{width:100%;margin:30px auto;font-size:16px;position:relative;overflow:hidden;}
.table1-wapper{height:200px;overflow-y:auto;}
.table-wapper table{border:1px solid #f00;line-height:2;border-collapse: collapse;white-space:nowrap;}
.table-wapper th{font-size:18px;font-weight:normal;background-color:#dbdbdb;}
.table-wapper td{text-align:center;border:1px solid #f00;}
.fixed-table1-wapper{position:absolute;top:0px;left:0px;background-color:#dbdbdb;}
/*#table1 tr:nth-child(2n){background-color:#ccc;}*/
</style>
</head>
<body >
<div class="table-wapper">
  <div class="table1-wapper">
    <table width="100%" cellpadding="0" cellspacing="0" id="table1">
      <tr>
        <th>序号</th>
        <th>股票名称</th>
        <th>股票代码</th>
        <th>成交</th>
        <th>涨跌幅</th>
        <th>换手率</th>
        <th>行业板块</th>
      </tr>
      <tr>
        <td>1</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>2</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>3</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>4</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>5</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>6</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>7</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>8</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>9</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
      <tr>
        <td>10</td>
        <td>光明乳业</td>
        <td>600597</td>
        <td>15.2</td>
        <td>+6.23%</td>
        <td>0.12%</td>
        <td>食品饮料</td>
      </tr>
    </table>
  </div>
   <div class="fixed-table1-wapper">
    <table width="100%" cellpadding="0" cellspacing="0" id="fixed-table1">
        
    </table>
  </div>
</div>
<script type="text/javascript">
$(function(){<BR>     $("#table1 tr:even").css("background-color","#ccc");  //奇偶行颜色
  var inner_width=$("#table1").outerWidth();
  $(".fixed-table1-wapper").css("width",inner_width+"px");
  var th_new=$("#table1 tr").eq(0).clone();
  $("#fixed-table1").append(th_new);
  
})
  
$(window).resize(function(){
  trResize();
});
  
$(".table1-wapper").scroll(function(){
  var scroll=-$(this).scrollLeft()
  $(".fixed-table1-wapper").css("left",scroll+"px");
});
  
function trResize(){
  var inner_width=$("#table1").outerWidth();
  $(".fixed-table1-wapper").css("width",inner_width+"px");
  $("#fixed-table1 th").each(function(){
    var num=$(this).index();
    var th_width=$("#table1 th").eq(num).width();
    //console.log("th_width:"+th_width);
    $(this).css("width",th_width+"px");
  });
}
  
</script>
</body>
</html>

以上这篇响应式表格之固定表头的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持phpstudy。


代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!