关闭

常用的固定表头的几种做法

922人阅读 评论(0) 收藏 举报

 

这几天修改列表的样式风格,提到了列表表头的固定方法,总结一下常见的几种:
第一种感觉最简单的就是分放在两个<table/>标签里,这样只控制不含有标题的那个<table/>,代码如下:

<table width="300"  border="0" cellpadding="0" cellspacing="1" bgcolor="#0099CC">
  <tr>
    <th width="25%" nowrap><font color="#FFFFFF">标题一</font></th>
    <th width="25%" nowrap><font color="#FFFFFF">标题二</font></th>
    <th width="25%" nowrap><font color="#FFFFFF">标题三</font></th>
    <th width="25%" nowrap><font color="#FFFFFF">标题四</font></th>
  </tr>
</table>
<span style="overflow-y:auto;height:100px;width:320px">
<table width="300"  border="0" cellpadding="0" cellspacing="1" bgcolor="#0099CC">
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
</table>
</span></td>
</tr>
<tr>
</table>

第二种不是很灵活,但是也比较简单,就是通过一个层来进行处理,将<table/>放入层中,代码如下:

<html>
<head>
   <title>Some Title</title>
   <style>
    <!--
  table {
    border-collapse : collapse;
    table-layout    : fixed;
  }

  td, th {
    background-color: #aaaaaa;
    border-right    : 1px solid #ffffff;
    color           : #ffffff;
    width           : 100px;
    text-align      : center;
  }

  th.locked_top {
    background-color: #343421;
    font-weight     : bold;
    top             : expression(document.getElementById('table_container').scrollTop);
    border-top      : 1px solid #ffffff;
    position        : relative;
    z-index         : 1
  }

  #table_container {
     width          : 300px;
     height     : 100px;
     overflow       : scroll;
    
  }
    -->
   </style>
   </head>

<body>

   <div id='table_container'>

<table width="300"  border="0" cellpadding="0" cellspacing="1" bgcolor="#0099CC">
  <tr>
    <th width="25%"  class='locked_top'><font color="#FFFFFF">标题一</font></th>
    <th width="25%"  class='locked_top'><font color="#FFFFFF">标题二</font></th>
    <th width="25%"  class='locked_top'><font color="#FFFFFF">标题三</font></th>
    <th width="25%"  class='locked_top'><font color="#FFFFFF">标题四</font></th>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
</table>
   </div> 


</body>
</html>

从以上代码可以看出,第二种不太方便的地方就是有一个id限制,给我的感觉就不是很舒服,但的确是非常的简单易用。

第三种也不是很麻烦,不使用id,但是这个代价却是通过增加一个层(<div/>)的代价换来的,这时其中层的宽度设置就成为了关键。可以看一下源代码,如下:

<html>
<head>
   <title>Some Title</title>
   <style>
DIV.tableContainer {
 OVERFLOW-X: auto; WIDTH: 100px
}
DIV.bodyContainer {
 OVERFLOW-Y: auto; OVERFLOW-X: hidden; WIDTH: 300px; HEIGHT: 100px;
}
   </style>
   </head>

<body>

   <DIV class=tableContainer>
<table>
 <tr>
  <td>
<table width="300"  border="0" cellpadding="0" cellspacing="1" bgcolor="#0099CC">
  <tr>
    <th width="25%" nowrap><font color="#FFFFFF">标题一</font></th>
    <th width="25%" nowrap><font color="#FFFFFF">标题二</font></th>
    <th width="25%" nowrap><font color="#FFFFFF">标题三</font></th>
    <th width="25%" nowrap><font color="#FFFFFF">标题四</font></th>
  </tr>
</table>
 
    <DIV class=bodyContainer>
      <table width="300">
     <tbody>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
  <tr bgcolor="#FFFFFF">
    <td width="25%"> 1</td>
               
    <td width="25%"> 2</td>
               
    <td width="25%"> 3</td>
               
    <td width="25%"> 4</td>
        </tr>
      </tbody>
    </table>
  </div>
</td></tr>
   </table>
   </div> 


</body>
</html>

使用第三种方法时要特别注意:
最外边的层<div/>中设置的宽度,仅仅为显示整个列表的宽度,高度也是如此。里面的层(<div/>)中的宽度一定要和表格的宽度一致,例如此处为300。否则就会出现不对应的现象。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:122531次
    • 积分:1771
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:56篇
    • 译文:0篇
    • 评论:6条
    最新评论