[CSS] CSSのみで作るテーブルヘッダ固定(JavaScript不要)
CSS の display: sticky を使うことで、jQuery などの JavaScript を使わずにテーブルヘッダの固定が出来ます。若干、扱いが難しい面もありますが、不安定なプラグインの動作に悩まされることなく手軽に導入できます。
サンプル
見かけの等級 | 星座 | バイエル符号 | 名称 | 距離 (光年) | 絶対等級 | 英名 |
---|---|---|---|---|---|---|
-26.75 | 太陽 | 0.000016 | 4.82 | |||
-1.46 | おおいぬ座 | α星 | シリウス | 8.6 | 1.434 | Sirius |
-0.74 | りゅうこつ座 | α星 | カノープス | 309 | -5.624 | Canopus |
-0.1 | ケンタウルス座 | α星 | 4.39 | 4.365 | α Centauri | |
-0.05 | うしかい座 | α星 | アークトゥルス | 36.7 | -0.307 | Arcturus |
0.01 | ケンタウルス座 | α星A | リギル・ケンタウルス | 4.39 | 4.365 | Rigil Kentaurus |
0.03 | こと座 | α星 | ベガ | 25.03 | 0.604 | Vega |
0.08 | ぎょしゃ座 | α星A | カペラ | 42.78 | -0.510 | Capella |
0.13 | オリオン座 | β星 | リゲル | 862.43 | -6.983 | Rigel |
0.37 | こいぬ座 | α星 | プロキオン | 11.46 | 2.641 | Procyon |
0.42 | オリオン座 | α星 | ベテルギウス | 642.22 | -5.499 | Betelgeuse |
0.46 | エリダヌス座 | α星 | アケルナル | 139.38 | -2.695 | Achernar |
0.6 | ケンタウルス座 | β星 | ハダル | 391.83 | -4.799 | Hadar |
0.667 | みなみじゅうじ座 | α星 | アクルックス | 320 | Acrux | |
0.76 | わし座 | α星 | アルタイル | 16.72 | 2.21 | Altair |
0.86 | おうし座 | α星 | アルデバラン | 66.61 | -0.692 | Aldebaran |
0.91 | さそり座 | α星 | アンタレス | 553.48 | -5.239 | Antares |
0.97 | おとめ座 | α星 | スピカ | 249.62 | -3.450 | Spica |
1.14 | ふたご座 | β星 | ポルックス | 33.77 | 1.064 | Pollux |
1.16 | みなみのうお座 | α星 | フォーマルハウト | 25.11 | 1.727 | Fomalhaut |
1.25 | はくちょう座 | α星 | デネブ | 1411.26 | -6.932 | Deneb |
1.25 | みなみじゅうじ座 | β星 | ミモザ | 278.39 | -3.407 | Mimosa |
1.33 | ケンタウルス座 | α星B | トリマン | 4.39 | 5.685 | Toliman |
1.4 | しし座 | α星A | レグルス | 79.26 | -0.529 | Regulus |
1.5 | おおいぬ座 | ε星 | アダーラ | 404.97 | -3.971 | Adara |
1.58 | ふたご座 | α星 | カストル | 50.84 | 0.615 | Castor |
1.62 | さそり座 | λ星 | シャウラ | 570.93 | -4.597 | Shaula |
1.64 | みなみじゅうじ座 | γ星 | ガクルックス | 88.51 | -0.529 | Gacrux |
1.64 | オリオン座 | γ星 | ベラトリックス | 252.32 | -2.804 | Bellatrix |
1.65 | おうし座 | β星 | エルナト | 133.83 | -1.417 | Elnath |
1.69 | りゅうこつ座 | β星 | ミアプラキドゥス | 113.12 | -1.012 | Miaplacidus |
1.69 | オリオン座 | ε星 | アルニラム | 1975.76 | -7.223 | Alnilam |
1.71 | つる座 | α星 | アルナイル | 100.96 | -0.745 | Al Na'ir |
1.714 | ほ座 | γ星 | スハイル・ムーリフ、レゴール | 1116.44 | -5.843 | Al Suhail al-Muhlif |
1.77 | おおぐま座 | ε星 | アリオト | 82.51 | -0.246 | Alioth |
1.79 | オリオン座 | ζ星 | アルニタク | 735.89 | -4.978 | Alnitak |
1.79 | おおぐま座 | α星 | ドゥーベ | 122.83 | -1.090 | Dubhe |
1.79 | ペルセウス座 | α星 | ミルファク | 506.21 | -4.166 | Mirfak |
1.84 | おおいぬ座 | δ星 | ウェズン | 1605.91 | -6.623 | Wezen |
1.85 | いて座 | ε星 | カウス・アウストラリス | 143.23 | -1.364 | Kaus Australis |
1.86 | おおぐま座 | η星 | アルカイド | 103.89 | -0.657 | Alkaid |
1.862 | さそり座 | θ星 | サルガス | 300.18 | -2.959 | Sargas |
1.9 | ぎょしゃ座 | β星 | メンカリナン | 81.07 | -0.078 | Menkalinan |
1.918 | くじゃく座 | α星 | ピーコック | 178.73 | -1.777 | Peacock |
1.92 | ふたご座 | γ星 | アルヘナ | 109.25 | -0.706 | Alhena |
1.92 | みなみのさんかく座 | α星 | アトリア | 390.42 | -3.472 | Atria |
1.95 | ほ座 | δ星 | Alsephina | 80.51 | -0.013 | Alsephina |
1.953 | りゅうこつ座 | ε星 | アヴィオール | 604.82 | -4.389 | Avior |
1.97 | おおいぬ座 | β星 | ミルザム | 492.45 | -3.926 | Murzim |
1.97 | うみへび座 | α星 | アルファルド | 180.21 | -1.743 | Alphard |
2.01 | おひつじ座 | α星 | ハマル | 65.78 | 0.486 | Hamal |
2.01 | くじら座 | β星 | ディフダ | 96.28 | -0.342 | Diphda |
2.02 | こぐま座 | α星 | ポラリス(現北極星) | 432.36 | -3.593 | Polaris |
2.05 | ケンタウルス座 | θ星 | メンケント | 58.79 | 0.77 | Menkent |
2.05 | アンドロメダ座 | β星 | ミラク | 197.34 | -1.860 | Mirach |
2.06 | オリオン座 | κ星 | サイフ | 646.83 | -4.428 | Saiph |
2.06 | アンドロメダ座 | α星 | アルフェラッツ | 96.97 | -0.307 | Alpheratz |
2.067 | いて座 | σ星 | ヌンキ | 227.65 | -2.153 | Nunki |
2.07 | へびつかい座 | α星 | ラス・アルハゲ | 48.56 | 1.205 | Rasalhague |
2.08 | こぐま座 | β星 | コカブ | 130.87 | -0.938 | Kochab |
2.1 | アンドロメダ座 | γ星 | アルマク | 392.77 | -3.305 | Almach |
2.11 | つる座 | β星 | Tiaki | 176.89 | -1.562 | Tiaki |
2.12 | ペルセウス座 | β星 | アルゴル | 89.88 | -0.082 | Algol |
2.13 | しし座 | β星 | デネボラ | 35.86 | 1.923 | Denebola |
2.17 | ケンタウルス座 | γ星 | ムリファイン | 130.09 | -0.835 | Muhlifain |
2.21 | ほ座 | λ星 | スハイル | 544.24 | -3.903 | Suhail |
2.23 | りゅう座 | γ星 | エルタニン | 154.21 | -1.144 | Etamin |
2.23 | カシオペヤ座 | α星 | シェダル | Schedar | ||
2.23 | はくちょう座 | γ星 | サドル | 1831.46 | -6.518 | Sadr |
2.24 | かんむり座 | α星 | アルフェッカ | 75.01 | 0.43 | Alphecca |
2.25 | とも座 | ζ星 | ナオス | 1083.06 | -5.357 | Naos |
2.26 | りゅうこつ座 | ι星 | アスピディスケ | 765.26 | -4.593 | Aspidiske |
2.27 | おおぐま座 | ζ星 | ミザール | 85.77 | 0.169 | Mizar |
2.27 | カシオペヤ座 | β星 | カフ | 54.72 | 1.146 | Caph |
2.286 | おおかみ座 | α星 | 464.39 | -3.482 | ||
2.29 | さそり座 | ε星 | Larawag | 80 | 0.4 | Larawag |
2.3 | ケンタウルス座 | ε星 | 427.26 | -3.287 | ||
2.31 | ケンタウルス座 | η星 | 305.53 | -2.549 | ||
2.32 | さそり座 | δ星 | ジュバ | 490.96 | -3.569 | Dschubba |
2.37 | おおぐま座 | β星 | メラク | 79.71 | 0.429 | Merak |
2.37 | しし座 | γ星 | アルギエバ | 130.04 | -0.634 | Algieba |
2.37 | ほうおう座 | α星 | アンカア | 84.68 | 0.297 | Ankaa |
2.386 | さそり座 | κ星 | ギルタブ | 482.96 | -3.467 | Girtab |
2.39 | うしかい座 | ε星 | イザール | 202.48 | -1.576 | Izar |
2.39 | ペガスス座 | ε星 | エニフ | 689.22 | -4.236 | Enif |
2.39 | カシオペヤ座 | γ星 | 612.78 | -3.980 | γ Cassiopeiae | |
2.41 | オリオン座 | δ星 | ミンタカ | 692.14 | -4.225 | Mintaka |
2.42 | ペガスス座 | β星 | シェアト | 195.91 | -1.474 | Scheat |
2.42 | へびつかい座 | η星 | サビク | 88.32 | 0.256 | Sabik |
2.44 | おおぐま座 | γ星 | フェクダ | 83.14 | 0.407 | Phecda |
2.45 | おおいぬ座 | η星 | アルドラ | 1987.8 | -6.476 | Aludra |
2.46 | ケフェウス座 | α星 | アルデラミン | 49.02 | 1.574 | Alderamin |
2.473 | ほ座 | κ星 | マルカブ | 570 | -3.7 | Markab |
2.48 | はくちょう座 | ε星A | アルジェナー | 72.67 | 0.739 | Aljanah |
2.48 | ペガスス座 | α星 | マルカブ | 133.28 | -0.578 | Markab |
出典:Wikipedia
HTML
<div class="scrollbox"> <div class="innerbox"> <table class="tablefix"> <thead> <tr><th></th></tr> </thead> <tbody> <tr><td></td></tr> </tbody> </table> </div> </div>
CSS
.scrollbox { position: relative; width: 100%; height: 30em; overflow: scroll; border: 1px solid gray; } .innerbox { padding: 1em; display: table-cell; } .tablefix { border-collapse: separate; border-spacing: 0px; border: 1px solid #dddddd; } .tablefix thead th { position: sticky; top: 0; white-space: nowrap; background-color: #e3e3e3; } .tablefix th, .tablefix td { border: 1px solid #dddddd; padding: 0.5em; }
解説
Firefox のバグに対応
テーブルを border-collapse: collapse; にして th に position: sticky; を設定すると、firefox 系で枠線(の右側と下側)が消えるバグが発生します。このためテーブルを border-collapse: separate; border-spacing: 0px; にしています。この場合、枠線の太さを 2px にする場合と 1px にする場合とで工夫が必要になります。
枠線の太さを 2px にする場合
table, th, td の3つに 1px の枠線を付けます(サンプルの方法)。
枠線の太さを 1px にする場合
table の右と下に 1px の枠線、th, td の左と上に 1px の枠線を付けます。
.tablefix { border-bottom: 1px solid #dddddd; border-right: 1px solid #dddddd; } .tablefix th, .tablefix td { border-top: 1px solid #dddddd; border-left: 1px solid #dddddd; }
innerbox について
scrollbox 内でスクロールさせたとき、padding(もくしはテーブルの margin)がうまく適用されない点について修正しています。これ(display: table-cell;)が無いと、右側へスクロールさせても余白がありません。また、Firefox と Chrome で下側へのスクロールで違いがあります。
なお、スクロールボックス内に入れない場合や、余白が必要ない場合は必要ありません。
0 件のコメント