- Home
»
- XHTML+CSS Webサイト制作Tips
»
- (X)HTML+CSS Tips
»
- テーブルのヘッダを固定
- (X)HTML+CSS Tips
»
- XHTML+CSS Webサイト制作Tips
»
(X)HTML+CSS Tips
テーブルのヘッダを固定
テーブルのデータ部分が長くなってしまった場合、スクロールしていくと、ヘッダ部分が見えなくなってしまいます。
このヘッダ部分を固定し、データ部分のみをスクロールさせる方法(エクセルの「ウィンドウ枠の固定」と同様の処理)を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は省略しています。
また、データ部分についても長くなるので省略しています。
<div class="table_header_fixed"> <table cellspacing="0"> <thead> <tr> <th>順位</th> <th>タイトル</th> <th>スタジオ</th> <th class="last">興行成績</th> </tr> </thead> <tfoot> <tr> <td colspan="4" class="last">copyright</td> </tr> </tfoot> <tbody> <tr> <td>1</td> <td>パイレーツ・オブ・カリビアン/ワールド・エンド</td> <td>ディズニー</td> <td class="last">$961,002,663 </td> </tr> <tr> <td>2</td> <td>ハリー・ポッターと不死鳥の騎士団</td> <td>ワーナー・ブラザーズ</td> <td class="last">$938,450,062 </td> </tr> (中略) <tr> <td>10</td> <td>ダイ・ハード4.0</td> <td>FOX</td> <td class="last">$382,118,871 </td> </tr> </tbody> </table> </div>
CSSファイル
div.table_header_fixed { overflow: auto; margin: 0 auto; width: 534px; } * html div.table_header_fixed { height: 150px; } *+html div.table_header_fixed { height: 150px; } div.table_header_fixed table { width: 500px; } div.table_header_fixed table > tbody { overflow: auto; height: 150px; overflow-x: hidden; } div.table_header_fixed thead tr { position:relative; top: expression(offsetParent.scrollTop); } div.table_header_fixed thead th { text-align: center; background-color: #E3F2DA; color: #5c5c5c; border-top: solid 1px #d8d8d8; border-left: solid 1px #d8d8d8; border-bottom: solid 1px #d8d8d8; } div.table_header_fixed tbody td { color: #000; padding: 5px; border-bottom: solid 1px #d8d8d8; border-left: solid 1px #d8d8d8; white-space : nowrap; } div.table_header_fixed .last { border-right: solid 1px #d8d8d8; } div.table_header_fixed tfoot tr { position: relative; overflow-x: hidden; top: expression( parentNode.parentNode.offsetHeight >= offsetParent.offsetHeight ? 0 - parentNode.parentNode.offsetHeight + offsetParent.offsetHeight + offsetParent.scrollTop : 0); } div.table_header_fixed tfoot td { text-align: center; font-size: 11px; background-color: #E3F2DA; color: #5c5c5c; border: solid 1px #d8d8d8; } div.table_header_fixed td:last-child { padding-right: 10px; }