前回は CSS のみでテーブルヘッダを固定する方法を紹介しました。ただ、ページ構成によっては position: sticky; が効かない場合があるため、今回は JavaScript を使う方法を紹介します。jQuery には高機能なプラグインがありますが、実装が複雑なためか動作が不安定になることがありますが、余計な機能はいらないならこれで十分です。
| 見かけの等級 | 星座 | バイエル符号 | 名称 | 距離 (光年) | 絶対等級 | 英名 |
|---|---|---|---|---|---|---|
| -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 |
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-bottom: 1px solid #dddddd;
border-right: 1px solid #dddddd;
}
.tablefix thead th {
position: relative;
white-space: nowrap;
background-color: #e3e3e3;
}
.tablefix th,
.tablefix td {
border-top: 1px solid #dddddd;
border-left: 1px solid #dddddd;
padding: 0.5em;
}
JavaScript(要 jQuery)
$(function(){
$('.scrollbox').scroll(function(e){
let th_top = $(this).find('.tablefix').position().top;
let filter;
if (th_top>=0) {
th_top = 0;
filter = 'unset';
} else {
th_top = -th_top-1;
filter = 'drop-shadow(0px 4px 0px #00000040) drop-shadow(0px 2px 0px #00000040)';
}
$(this).find('.tablefix thead th').css({
top: th_top,
filter: filter
});
});
});
解説
ロジック
scrollbox のスクロールイベントで、テーブルヘッダがスクロールアウトしていた場合、位置を計算して更新しています。位置計算でマイナス1しているのは、枠線分の背景が透けて見えるのを防いでいるためです。
また、ヘッダが固定状態になったときに下側に影を落としています。box-shadow ではなく filter を使っているのは、影が左右へはみ出すのを防ぐためです(同じ理由でぼかしを入れられない)。スタイルの変更はお好みに合わせて変更してください。
Firefox のバグに対応
テーブルを border-collapse: collapse; にして th に position: sticky; を設定すると、firefox 系で枠線(の右側と下側)が消えるバグが発生します。このためテーブルを border-collapse: separate; border-spacing: 0px; にしています。この場合、枠線の太さを 2px にする場合と 1px にする場合とで工夫が必要になります。
枠線の太さを 2px にする場合
table, th, td の3つに 1px の枠線を付けます。
.tablefix {
border-collapse: separate;
border-spacing: 0;
border: 1px solid #dddddd;
}
.tablefix th,
.tablefix td {
border: 1px solid #dddddd;
}
枠線の太さを 1px にする場合
table の右と下に 1px の枠線、th, td の左と上に 1px の枠線を付けます(サンプルの方法)。
innerbox について
scrollbox 内でスクロールさせたとき、padding(もくしはテーブルの margin)がうまく適用されない点について修正しています。これ(display: table-cell;)が無いと、右側へスクロールさせても余白がありません。また、Firefox と Chrome で下側へのスクロールで違いがあります。
なお、スクロールボックス内に入れない場合や、余白が必要ない場合は必要ありません。
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 |
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 で下側へのスクロールで違いがあります。
なお、スクロールボックス内に入れない場合や、余白が必要ない場合は必要ありません。
複数の REST API の呼び出しなどで、すべての通信が終わった後に何か実行したいとき地味に困りますよね。非同期通信なので、終了時のコールバック関数で処理するのですが、他の通信がまだ終わったのをどうやって知るのがベストでしょうか。様々な手があるかと思いますが、今回は記述がシンプルで分かり易い方法を考えてみました。他にもっといい手がある、という方はコメント欄にて教えて下さい。
考案した方法は、必要な処理数を各終了時関数内でカウントダウンしていき、ゼロを引いた時点ですべての完了関数を呼び出すというものです。カウントダウンとゼロ判定、完了関数の呼び出しまで1行で記述しており、可読性も高いと思います。
let standby = 2;
$.getJSON(URL1,function(json){
allReady();
});
$.getJSON(URL2,function(json){
allReady();
});
function allReady() {
if (--standby) { return; }
console.log('All Ready !');
}
邪魔なボタンの消去
オープニングで表示される「イントロスキップ」ボタン、エンドクレジットで表示される「クレジットを見る」「次のエピソード」「←」ボタンは、機能拡張「uBlock Origin」で消去可能です。機能拡張をインストールして、これらのボタンが表示されている間にスポイトツールを使って指定します。なお「クレジットを見る」「次のエピソード」については、両方のボタンの隙間を指定するとまとめて指定できます。
再生開始時の表示をクリアにする(プレイヤーコントロールを消す)
開始時にオーバーラップするプレイヤーコントロールも邪魔ですが、uBlock を指定すると操作しにくくなります。今のところスマートな方法がないのですが、下記のような手順でオーバーラップを回避できます。
- 再生開始直後に「スペース」キーを押す
- 「←」キーを押し先頭にシークさせる
- マウスカーソルを画面右端に置く(マウスに電源があればオフにしておく)
- プレイヤーコントロールが消えるのを待つ
- 「スペース」キーを押し再生開始する
動画終了の5分前付近で高確率でプチフリする
マシンスペックが足りないわけでも無いのに、45分ドラマの40分付近で高確率で映像がカクカクっとプチフリし、数秒後に音声が少し途切れてしまう現象があるようです(Windows10 / Chrome)。音声の途切れは会話の中だと1文字(音)抜けるので非常に気になります。
恐らくはバックグラウンドで次のエピソードを準備するなどの処理が走るためかと思われます。はっきり環境を特定できたわけではありませんが、別のブラウザ(Edge)で視聴したときは再現しませんでした。Chrome でも他の機能拡張をオフにするなり、まだ検証の余地はありますがとりあえず Edge を NETFLIX 視聴専用にしたいと思います。

チキンラーメンのたまごポケットに乗っけてお湯を注いだだけでは、なかなか写真のように綺麗に固まってくれません。そこでできるだけ手間なく簡単に作れる方法を考案してみました。
作り方
- どんぶりにチキンラーメンを入れ、ラップを1/3程度掛けておきます
- 冷蔵庫からたまごを取り出しコップに入れます
- やかんにお湯を沸かします
- 半分くらいお湯が沸いたら、たまごの入ったコップに注ぎます(温めて固まりやすくするわけです)
- 完全にお湯が沸いたら凹みに卵を乗せ、白身の部分に回しながらお湯を注ぎます(そっと崩さないように)
- ラップを全部被せます(蓋があれば併用します)
ポイント
すぐに食べたいのに、冷蔵庫から予めたまごを取り出して常温になるまで待つなんて出来ません。そこでお湯が沸く途中のぬるま湯に、たまごを浸しておくことでちょうどいい温度まで上げます。
お湯の注ぎ方は白身に直撃させならが回し入れ、ラップで素早く密閉させて熱を逃がさないようにします。もしラップだけで熱が逃げるなら、蓋を併用するとよいでしょう。
これをなぜ買ったか
「オーディオ」ド素人の私がなぜこれを買ったかと言えば、複数の音声ソースを ART SPLIT Mix 4 というミキサーで統合してコンポに入力していて、一括したボリュームコントローラが欲しい、ということでした。また、この構成だとボリュームが小さくコンポ側で最大音量に調整する必要があり、他の音声ソースに切り替えると最大音量で鳴ってしまうので、これも改善したかった。目的としては、ミキサーとコンポの間にボリュームコントロール(増幅できるやつ)を入れたい、というものです。まあ、結論から言うと検討違いの買い物なんですけどね。
目的からして必要なのはアンプとよばれる製品でいいはずだが、種類がたくさんあって漂流してしまった。結局、必要端子とボリューム、外部電源が入る製品という条件を満たすこれを選んでみたわけ。
ダメ元で購入してみてまったく目的にマッチしない製品だったと数秒で理解した。ボリュームは減衰しかできず、増幅できないばかりか、最大ボリュームでも少し小さくなる。ほかに使い道は無いだろうか、安いとはいえもったいない。
何に使うものだったか
搭載されている機能を調べると、BBE と ViVA HD3D というものがある。BBE はデジタル圧縮で曇った音を原音に近いクリアな音に補正するためのもの。ViVA HD3D は周波数ごとに音を分離して何かすることにより音に広がりを持たせるもの。
実際にそれぞれ使用してみると、はっきりと違いが聞き取れた。特に 3D のほうは左右に音が広がり、音に包み込まれるような感覚を得た。この価格帯でこれほどの音質改善に、音質に無頓着な私も魅力を感じざるを得なかった。
製品としては車内での利用を想定しているらしいので、DVDプレーヤーなどとカーオーディオの間に入れて音質を改善させるものだと思われる。ちなみに電源アダプタは付属しておらず、DC12V ということでシガーソケットなどから取りやすくなっている。
ヘッドホンで聴くと問題点も
スピーカーで聴いたときは、すばらしく音質が良くなったと感じ、目的には合致せずとも利用したくなっていた。しかし、ヘッドホンで聴いてみるとノイズが乗ってしまうようで、かなり気になってしまう。
常に「サー」というノイズが乗っていて、よく聞くと「ブーン」という低いノイズも聞き取れる。特に映画を視聴しているとき、静かなシーンでは雰囲気を壊してしまうほどだ。この製品を取り除くと気にならなくなるので、この製品自体が発しているか、元の音源のノイズを強調してしまっている、ということかも知れません。
いずれにしろ、昼間はスピーカー、夜はヘッドホンといった視聴環境なため、このヘッドホンでの状況は許容できない。この製品の電源をオフにすると音声自体がオフになるため、使い分けをするのもうまくない。
まとめ
当初の目的は達成できなかったが、音質の改善は非常に魅力的だった。ヘッドホン使用時にノイズが乗ってしまうので残念ながら使用することは無いが、車内での利用なら恐らく問題になることは無いだろう。また、電源アダプタやケーブルが付属しないので、別途用意する必要があるので注意が必要だ。
追記
本来の目的(小さい音声ソースを増幅したい)だが、どうやらオーディオの知識不足から思い違いをしていたみたい。小さいのはライン入力(AUX)に接続していたためでした。使用しているコンポの、ポータブル入力(PORTABLE IN)に接続すれば良かったようです。
そう言えば昔、ミニピンジャックのケーブルを買ったときに抵抗入りを買ってしまい音が小さくなったことがあった。同じ音声信号でもレベル(強さ)の違いがあり、ただ繋がってればいいというものではないということを学習した。
YAMAHA サイトの「IPIPトンネリング【設定例10:IPv4 over IPv6 IPIPトンネル接続 インターネットマルチフィード株式会社 transix IPv4接続(固定IP)】」の設定例【ひかり電話を契約している場合:DHCPv6-PD】でひかり電話が使えなかったので原因を調べてみた。
経緯と現象
設定例をプロバイダの情報で置き換えて、すぐにインターネットは正常アクセスを確認できた。いっぽう、ひかり電話の方は「ツー」音だけ確認し、同時に購入した電話機の到着待ちの後回し。
新しい電話機を接続し電話を掛けると、どこに掛けても通話中の「ツー・ツー」音となる。外線から掛けてみると「現在、おかけになった相手の通信機器の電源が入っていない、もしくは故障、 またはネットワークの故障が発生していると思われます」のアナウンスが流れる。
ひかり電話の設定
設定例にひかり電話の設定も入っているものと思っていましたが、WebGUI で確認するとからっぽになっていた。かんたん設定からひかり電話の設定を追加する(インターフェイスは「WAN」、プレフィクスは「なし」)。これで状態表示の欄に、代表電話番号が入り接続中になり、ひかり電話も使えるようになった。
ただ、それと引き換えにインターネットがおかしくなる。繋がるサイトと繋がらないサイトが出てるので、IPv4 か IPv6 のどちらかが切れている感じに見えた。具体的には Google 検索はできるが、結果サイトに飛ぶとずっとぐるぐる状態になる。
設定コマンドの確認
WebGUI だとらちが明かないので、ひかり電話の設定を入れる前と後とで何が変更されたか確認してみた。これが実に大変な作業で、IPv6 も YAMAHA 製品でのひかり電話の設定も初めてだったので、コマンドひとつひとつ意味を確認していった。確認しても書いてある内容がイマイチ理解できないので、ダブって設定されているようなところを見つけてオフにする、という試行錯誤に出た。
ひかり電話で追加された不要な設定
試行錯誤の結果、不要部分が分かり、これをオフにすることで問題解決した。最短手順としては、(1)工場出荷状態から設定例のコマンドを流す、(2)WebGUI にてひかり電話の設定を追加する、(3)下記のコマンドで不要な設定をオフにする、となる。
no ipv6 lan1 address dhcp-prefix@lan2::1/64 no ipv6 lan2 address dhcp
また、ナンバーディスプレイを契約している場合は、下記の設定を入れておくと良い。これで TEL1 に接続した器機に発信者番号通知が流れるようになる。
analog arrive number display 1 on
多少の問題点も
上記設定を修正したところ、WebGUI のひかり電話の状態が表示されなくなってしまった。ひかり電話は発信も受信もできるので使う分には問題ないのだが、WebGUI ですべてできる訳ではないのだな。
エネループに期待したことと言えば、何度でも繰り返し使える、電池のモチがいい、液漏れしない、使い捨て電池うを使い続けるより経済的、などだったと思う。家にあるエネループは SANYO 時代のものだが、今思うにあまり自分にとってメリットの無い製品だった。
何度でも繰り返し使えなかった
いわゆるメモリー効果のためか、すぐに器機の動作が不安定になる。特にマウスやキーボードに使ったとき、止まったり入力を受け付けなくなることが頻繁に起こり、これらの器機は使い捨て電池に戻すことに。これまでの充電池の弱点を解決した製品なのかと勝手に思っていたが、ニッケル水素充電池の使いにくさは残ったまま、期待外れだった。
使いたいときにすぐ使えない
使い終わったら充電しとけばいいんだけど、充電器どこって探してるうちに、充電済みとそうで無いものが混ざって分からなくなる。結局使いたいときに、充電器を探して一応充電してってやってる手間が煩わしい。管理や整理は普通だと思うが、そもそも電池の需要が頻繁にあるわけじゃないので、どうしてもそうなる。
結局、扱いが面倒
電池の使い方に気を付ける点が多すぎる。メモリー効果でモチが悪くなったり、過放電はダメだとか、電極の接触不良に、購入時期を揃えてセットで使えとか、そんなに気を付けて使わないといけないの?
ここら辺が解決されて「簡単に何度でも繰り返し使える次世代の電池」というのがエネループへの期待だった。結論を言おう、買い置きの使い捨て電池の方が100倍使い勝手が良い。エコ病を拗らせるとロクなことが無いね。
まとめ
- 初期投資が高い割に繰り返し使えない(元が取れない)
- 使い方の気を付ける点が多すぎる
- メモリー効果が出た電池をリフレッシュするにはその機能がある充電器がいる(最初から付けとけ)
- 端子の腐食と思われる不安定動作が頻発
- 充電器の寿命サインが出ると特定に手間が掛かる(個別サインが無いので)
- そもそも寿命が来るほどの回数充電してない(公称回数と実質回数で乖離しすぎ)
IPv4 の固定IPを使っている関係でずっと IPv6 を避けてきたのだが、セッションを消費せずに固定IPが貰えるサービスがあるのを知った。「transix IPv4接続(固定IP)」というもので、インターリンクの「ZOOT NATIVE IPv4固定IP1個」というプランが採用しているようで、さっそく試してみることに。ちなみに、それほど詳しくは無いので知識不足で適当なことを書くかも知れないのでご注意を。
フレッツ光は「フレッツ・v6オプション」の契約が必要
電話で確認すると「フレッツ光サービス情報サイト」で契約すれば無料だが、電話で受け付けてもらうと手数料が掛かるとのこと。ただし家の場合、ルータの構成が特殊なためそのままでは情報サイトに接続できず、NTTレンタルルーターのみの構成に戻してから手続きする必要があった。
対応ルーターを調達
対応ルーターが必要になるため、対応ルーターの情報から選んで用意する。今まで使用していたのが YAMAHA RTX1200 なため、NVR510 を選定。ちなみにこのルーター、光電話に対応するためレンタルルーターが不要になる。また、ONU も内臓可能となっていてこれ1台に集約できるが、内臓用の小型 ONU への交換はかなりテクニックが要るらしい。
プロバイダと契約
インターリンクは2ヶ月無料があるのでそれを活用。なお「ZOOT NATIVE」と「ZOOT NATIVE IPv4固定IP1個」は別サービスなので注意。あと、他のプロバイダは調べていないが、対応しているプロバイダは少ない様子だ。
※他の方式では固定IPv4用に別セッションが必要になったりする
ルーターの設定とIPv6の基礎知識
YAMAHA のサイトで「IPIPトンネリング【設定例10:IPv4 over IPv6 IPIPトンネル接続 インターネットマルチフィード株式会社 transix IPv4接続(固定IP)】」を参考に設定を作成する。ヤマハルーターの設定例をプロバイダの契約情報で置き換えて作成すればよいが、いくつか基礎知識不足で躓いた。
アドレスの表記
128ビットを16ビットごとに「:」で区切り16進で表記したものだが、省略表記とかでアドレスっぽくなく見えたりするので戸惑った。各ビットグループは前ゼロは省略でき、ゼロのビットグループが連続する場合「::」で省略できる。ビットグループの省略は何個連続していも「::」になり、アドレス内で1箇所のみ省略可能な点に要注意だ。
プロバイダの情報の中で「インターフェイスID」が「::feed (0000:0000:0000:feed)」となっていて「は?」ってなった。これを下記の設定箇所にどうやって置き換えるのか。
ipv6 lan1 address dhcp-prefix@lan2::(インターフェイスID)/64
少し考えて、設定値は省略表記と括弧書きのが正式表記だろう(前知識が無いと分からん要素)。ただ「~lan2::(インターフェイスID)/64」の「::」が設定の区切りの意味なのか、アドレスの省略なのかよく分からなかった。最初「~lan2::::feed/64」と入れてみたがダメ、次に「~lan2::0000:0000:0000:feed/64」と入れてみたら通ったようだ。設定を再表示してみると「~lan2::feed/64」だったので、結局「::」は予め入れてあった省略記号だった模様。
あと、いかにも意味ありげな「feed」は、単語ではなく「0xFEED」という数値でしかない。IPv6 のアドレスが分かり難い原因はここら辺と、コロン記号を採用したことにあるんじゃないのかなあ。
IPv6アドレスの通知設定
この設定は見たところ必須ではないっぽい。要約すると「新しいアドレスが付与されたらアップデートサーバに通知すると通信再開が早まる」になる。Lua スクリプトで実行タイミングは起動時となっているので、停電時などでしか要らなさそう。設定しない場合どの程度待たされるのか、他に問題は無いのか、気になるところではあるが後回しでも良さそう。
具体的には lua スクリプトの設定例があるので、設定値のセクションをプロバイダからの情報で埋めて作成すれば良い。文字コードを迷ったが、設定例を「リンク先に名前を付けて保存」して編集することにした(SJIS)。後は USB メモリ経由でルーターにコピーし、設定例に従ってスケジュールを設定する。
copy usb1:/interlink_update.lua /interlink_update.lua show file list /
結果はいかに?
今まで20~30Mbps(夜間など 10Mbps を切ることもあった)が、初計測から 70~90Mbps と劇的に改善。ブラウザの表示も、モタツキがほとんど無くなり非常に快適だ。
重い腰を上げるまでは色々と面倒そうだったが、やってみると意外と簡単だった。ルーターの交換がお金的に痛いが、エレコム製なら1万くらいもある。自宅サーバーあるから回線弄りたくないと思っているアナタ、IPv4 を使い続ける理由はもはや無いだろう。








何年か前にホームセンタームサシで買ったカバコという商品ですが、材質に問題があるようで激しく劣化します。ちょっと触っただけで割れるほど脆くなり、片手でもほとんど負荷なく(チョコレートほどの強度)パキパキ折ることができるほど。壊れた部分は鋭角に尖ってかなり危険な状態になるので、すぐに使用を止めたほうがいいです。
ネットで調べても同様の報告はないので、改良されたのかパチものなのか分かりませんがリコールものの異常さだと思います。特にお子さんのいる家庭では、この製品につかまったりして壊れるとヤバいことになりかねません。壊れ方によっては剣先のように飛び出て危険極まりない状態になる場合がありますので。
家にはその時に買ったカバコしかないですが、全部この症状になっています。幸い簡単に細かくなるし、バラバラにして燃やすゴミとして処分します。
こんなキケンな製品は回収するなり、メーカーとしてきちんと対応して欲しいものだと思います。