這幾天修改列表的樣式風格,提到了列表表頭的固定方法,總結一下常見的幾種:
第一種感覺最簡單的就是分放在兩個<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。否則就會出現不對應的現象。