行数の多いテーブルだと、スクロールしていくとヘッダ部分が消えてしまうので、固定したいときがあります。sそんなとき、なるべくシンプルにコーディングするには、固定用のテーブルを別に用意したほうがシンプルに済みます。
こんな感じで。
| 名前 | 性別 | 年齢 |
|---|
| 名前 | 性別 | 年齢 |
|---|---|---|
| ハナ | メス | 5 |
| モモ | メス | 6 |
| コタロウ | オス | 8 |
| ナナ | メス | 4 |
| チョコ | オス | 5 |
| モカ | オス | 6 |
| リン | メス | 3 |
| ココ | メス | 7 |
| モコ | オス | 2 |
| ラン | メス | 11 |
| マロン | オス | 5 |
| レオ | オス | 6 |
| クルミ | メス | 8 |
| コロ | オス | 9 |
| ソラ | オス | 4 |
| アズキ | メス | 5 |
| アンズ | メス | 10 |
| ココア | オス | 9 |
| サクラ | メス | 7 |
| メイ | メス | 9 |
| タロウ | オス | 12 |
| テン | オス | 16 |
| ヒメ | メス | 4 |
| フク | メス | 8 |
| ルーク | オス | 6 |
| ルナ | メス | 7 |
| レオン | オス | 4 |
| クッキー | メス | 13 |
| クロ | オス | 5 |
| チロル | メス | 6 |
はじめは、theadをposition:fixed;で固定しようかと試行錯誤したのですが、tableのborder幅に振り回されたり、レスポンシブで幅が変わるとうまく合わせられないとか、悪戦苦闘するうちに、固定用のtableを別途用意したほうがシンプルで簡単だという結論に至りました。
あらかじめ、列幅を決めておかないといけませんが、レスポンシブにも対応できます。
HTMLはこんな感じで。sheet がテーブル本体で、fixheader が固定用。
| 名前 | 性別 | 年齢 |
|---|
| 名前 | 性別 | 年齢 |
|---|---|---|
| ハナ | メス | 5 |
| モモ | メス | 6 |
| コタロウ | オス | 8 |
| ナナ | メス | 4 |
| チョコ | オス | 5 |
| モカ | オス | 6 |
| リン | メス | 3 |
| ココ | メス | 7 |
| モコ | オス | 2 |
| ラン | メス | 11 |
| マロン | オス | 5 |
| レオ | オス | 6 |
| クルミ | メス | 8 |
| コロ | オス | 9 |
| ソラ | オス | 4 |
| アズキ | メス | 5 |
| アンズ | メス | 10 |
| ココア | オス | 9 |
| サクラ | メス | 7 |
| メイ | メス | 9 |
| タロウ | オス | 12 |
| テン | オス | 16 |
| ヒメ | メス | 4 |
| フク | メス | 8 |
| ルーク | オス | 6 |
| ルナ | メス | 7 |
| レオン | オス | 4 |
| クッキー | メス | 13 |
| クロ | オス | 5 |
| チロル | メス | 6 |
JQueryは、スクロールでテーブルが一番上に来たら、固定用テーブル(fixheader)を表示させるだけの簡単なものです。
ただし、レスポンシブで幅が変わったときのために、$(window).resize でテーブル幅を一致させています。