月額480円〜の高速レンタルサーバー ColorfulBox

Webサイト制作をご検討中の方へ。ScuderiaWebが低価格・短納期・高品質なWebサイトを制作いたします。

ローカルメニュー

(X)HTML+CSS Tips

IE5.5 IE6 IE7 FireFox2 Opera9.6 Chrome0.3

テーブルのヘッダを固定

テーブルのデータ部分が長くなってしまった場合、スクロールしていくと、ヘッダ部分が見えなくなってしまいます。
このヘッダ部分を固定し、データ部分のみをスクロールさせる方法(エクセルの「ウィンドウ枠の固定」と同様の処理)をCSSで実現します。

但し、いくつかの制限があります。
制限をあまり気にしたくない場合は、JavaScriptでの実装をおすすめします。

  • 横スクロールが必要な場合は使用できません。
  • tfootを使用する場合、行数が少ないと、データ部分とフッタの間に隙間ができます。

サンプル

順位 タイトル スタジオ 興行成績
1 パイレーツ・オブ・カリビアン
ワールド・エンド
ディズニー $961,002,663
2 ハリー・ポッターと不死鳥の騎士団 ワーナー・ブラザーズ $938,450,062
3 スパイダーマン3 ソニー $890,871,626
4 シュレック3 ドリームワークス $794,561,223
5 トランスフォーマー パラマウント $702,927,087
6 レミーのおいしいレストラン ディズニー/ピクサー $612,190,493
7 ザ・シンプソンズ MOVIE FOX $525,468,939
8 300 ワーナー・ブラザーズ $456,068,181
9 ボーン・アルティメイタム ユニバーサル映画 $439,449,365
10 ダイ・ハード4.0 FOX $382,118,871
2007 WORLDWIDE GROSSES

ソースコード

(X)HTMLファイル

ヘッダ固定に直接関係のないidやclassは省略しています。
また、データ部分についても長くなるので省略しています。

  1. <div class="table_header_fixed">  
  2.     <table cellspacing="0">  
  3.         <thead>  
  4.             <tr>  
  5.                 <th>順位</th>  
  6.                 <th>タイトル</th>  
  7.                 <th>スタジオ</th>  
  8.                 <th class="last">興行成績</th>  
  9.             </tr>  
  10.         </thead>  
  11.         <tfoot>  
  12.             <tr>  
  13.                 <td colspan="4" class="last">copyright</td>  
  14.             </tr>  
  15.         </tfoot>  
  16.         <tbody>  
  17.             <tr>  
  18.                 <td>1</td>  
  19.                 <td>パイレーツ・オブ・カリビアン/ワールド・エンド</td>  
  20.                 <td>ディズニー</td>  
  21.                 <td class="last">$961,002,663 </td>  
  22.             </tr>  
  23.             <tr>  
  24.                 <td>2</td>  
  25.                 <td>ハリー・ポッターと不死鳥の騎士団</td>  
  26.                 <td>ワーナー・ブラザーズ</td>  
  27.                 <td class="last">$938,450,062 </td>  
  28.             </tr>  
  29.     (中略)  
  30.             <tr>  
  31.                 <td>10</td>  
  32.                 <td>ダイ・ハード4.0</td>  
  33.                 <td>FOX</td>  
  34.                 <td class="last">$382,118,871 </td>  
  35.             </tr>  
  36.         </tbody>  
  37.     </table>  
  38. </div>  

CSSファイル

  1. div.table_header_fixed {  
  2.     overflowauto;  
  3.     margin0 auto;  
  4.     width534px;  
  5. }  
  6. * html div.table_header_fixed {  
  7.     height150px;  
  8. }  
  9. *+html div.table_header_fixed {  
  10.     height150px;  
  11. }  
  12. div.table_header_fixed table {  
  13.     width500px;  
  14. }  
  15. div.table_header_fixed table > tbody {  
  16.     overflowauto;   
  17.     height150px;  
  18.     overflow-x: hidden;  
  19. }  
  20. div.table_header_fixed thead tr {  
  21.     position:relative;   
  22.     top: expression(offsetParent.scrollTop);  
  23. }  
  24. div.table_header_fixed thead th {  
  25.     text-aligncenter;  
  26.     background-color#E3F2DA;  
  27.     color#5c5c5c;  
  28.     border-topsolid 1px #d8d8d8;  
  29.     border-leftsolid 1px #d8d8d8;  
  30.     border-bottomsolid 1px #d8d8d8;  
  31. }  
  32. div.table_header_fixed tbody td {  
  33.     color#000;  
  34.     padding5px;  
  35.     border-bottomsolid 1px #d8d8d8;  
  36.     border-leftsolid 1px #d8d8d8;  
  37.     white-space : nowrap;   
  38. }  
  39. div.table_header_fixed .last {  
  40.     border-rightsolid 1px #d8d8d8;  
  41. }  
  42. div.table_header_fixed tfoot tr {  
  43.     positionrelative;   
  44.     overflow-x: hidden;  
  45.     top: expression(  
  46.         parentNode.parentNode.offsetHeight >= offsetParent.offsetHeight ?   
  47.         0 - parentNode.parentNode.offsetHeight + offsetParent.offsetHeight + offsetParent.scrollTop : 0);  
  48. }  
  49. div.table_header_fixed tfoot td {  
  50.     text-aligncenter;  
  51.     font-size11px;  
  52.     background-color#E3F2DA;  
  53.     color#5c5c5c;  
  54.     bordersolid 1px #d8d8d8;  
  55. }  
  56. div.table_header_fixed td:last-child {   
  57.     padding-right10px;   
  58. }