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