table中表头不动,表体产生滚动条

 1 <div id="elec_table">
 2  2     <div class="table-head">
 3  3     <table>
 4  4         <tr>
 5                 <td>姓名</td><td>用途</td>
 6             </tr>
 7 11     </table>
 8 12     </div>
 9 13     <div class="table-body">
10 14     <table>
11 15            <tr><td>1</td><td>我只是用来测试的</td></tr>
12 18             <tr><td>2</td><td>我只是用来测试的</td></tr>
13 19             <tr><td>3</td><td>我只是用来测试的</td></tr>
14 20             <tr><td>4</td><td>我只是用来测试的</td></tr>
15 21             <tr><td>5</td><td>我只是用来测试的</td></tr>
16 22             <tr><td>6</td><td>我只是用来测试的</td></tr>
17 23             <tr><td>7</td><td>我只是用来测试的</td></tr>
18 24             <tr><td>8</td><td>我只是用来测试的</td></tr>
19 25             <tr><td>9</td><td>我只是用来测试的</td></tr>
20 26             <tr><td>10</td><td>我只是用来测试的</td></tr>
21 27             <tr><td>11</td><td>我只是用来测试的</td></tr>
22 28             <tr><td>12</td><td>我只是用来测试的</td></tr>
23 29             <tr><td>13</td><td>我只是用来测试的</td></tr>
24 30             <tr><td>14</td><td>我只是用来测试的</td></tr>
25 31             <tr><td>15</td><td>我只是用来测试的</td></tr>
26 33     </table>
27 34     </div>
28 35 </div>                

使用两个table标签,使用3个div,最外层的为全局容器,一个是表头容器,另一个是表体容器。

css如下:

/*外层容器设置高*/
#elec_table{ position:relative; height:600px; table-layout : fixed; } .bodyBox{ overflow-y:auto; overflow-x:hidden; height:570px; }
/*设置table-layout:fixed固定宽度,表头和表体需要对齐*/ table{ table-layout:fixed; }
/*设置单元格的宽度,可能会出现内容长需要换行的情况 使用white-space:normal,每个单元格都是一样的宽度*/ #elec_table td{ 20%; white-space:normal; }

注意点:

1.最外侧的div,需要用overflow-x来控制最横向滚动,因为overflow-x、y在IE中存在兼容性问题,当overflow-x/overflow-y其中之一被设置成'scroll'、'auto'、'hidden'时,另一个还是'visible',不会被设置为'auto' 所以,最好使用 "overflow-x:scroll; overflow-y:auto",这时候,右边的在需要时才会显示。如果希望右边的滚动条一直不显示,那么,可以使用:"overflow-x:scroll; overflow-y:hidden;" 

2.表头和表体的各列需要对齐,所以可以用table-layout:fixed;来固定宽度 

3.当用table-layout:fixed;固定了列宽度,也就会有长的内容会显示不全,那么可以用white-space:normal;来进行换行

原文地址:https://www.cnblogs.com/litter/p/6371080.html