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

原创 2006年06月06日 12:44:00

 

这几天修改列表的样式风格,提到了列表表头的固定方法,总结一下常见的几种:
第一种感觉最简单的就是分放在两个<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。否则就会出现不对应的现象。

Excel斜表头的做法

  • 2011年07月14日 16:19
  • 220KB
  • 下载

固定table表头的插件

  • 2017年08月08日 16:23
  • 27KB
  • 下载

网页固定侧栏的做法

固定侧边的做法有很多种,今天为大家介绍一种非常简单的做法。整个html文档只有23行代码就搞定了。网上也有很多做法,但是都太过复杂,一大堆代码。而且有的很采用一些jquery的一些插件。侧栏的做法和顶...

JavaScript:固定table的表头

  • 2015年09月19日 13:03
  • 96KB
  • 下载

android 怎么给listview添加一个固定表头以及显示像table的效果

定义一个样式一条线             1dp         fill_parent         #dadada     1.为表头新建一个layout:a_item.x...

html表头固定 表体滚动

  • 2015年06月22日 11:00
  • 3KB
  • 下载

table中head表头固定,body滚动

table中head表头固定,body滚动
  • hualele
  • hualele
  • 2016年11月01日 10:15
  • 14085

JQUERY实现表头固定

  • 2014年07月25日 19:36
  • 27KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:常用的固定表头的几种做法
举报原因:
原因补充:

(最多只允许输入30个字)