[解決済み] htmlテーブルのみ最上段をフリーズさせる(テーブルヘッダーの固定スクロール)
質問
htmlのテーブルで、最上段が凍結された状態(縦にスクロールしたときに常に見える状態)にしたいのですが、どうすればよいですか?
javascriptを使わずにこれを実現する賢い方法はないでしょうか?
なお、左カラムのフリーズは必要ありません。
解決方法は?
これは固定ヘッダースクロールと呼ばれています。いくつかの方法が紹介されています。
http://www.imaputz.com/cssStuff/bigFourVersion.html
特にクロスブラウザをサポートしたい場合は、JavaScriptなしでは効果的にこれを実現することはできないでしょう。
特にクロスブラウザー/バージョンサポートに関しては、どのようなアプローチを取っても、多くの難問があります。
編集する
修正したいのがヘッダーではなく、データの1行目であっても、考え方は同じです。どちらを指しているのか100%ではありませんでした。
追加考察 私は会社から、IE7+、Firefox、Chromeで機能するこの解決策を研究するよう命じられました。
何度も何度も試行錯誤を繰り返した結果、ある根本的な問題に行き着いたのです。なぜなら、ほとんどのソリューションでは、2つの別々のテーブルを使用し、1つはヘッダー用で、データを含む2つ目のテーブルの上に浮かんで固定されるため、固定ヘッダーを得るためには、固定高さ/幅のカラムを実装する必要があるからです。
//float this one right over second table
<table>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</table>
<table>
//Data
</table>
tbodyタグとtheadタグを利用する方法もありますが、IEがtbodyにスクロールバーを付けることを許可しないため、高さを制限することができません(とても愚かなIMOです)。
<table>
<thead style="do some stuff to fix its position">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody style="No scrolling allowed here!">
Data here
</tbody>
</table>
この方法には多くの問題があります。たとえば、正確なピクセル幅を確保することです。テーブルというのはとてもかわいいもので、ブラウザによって計算に基づいて異なるピクセルが割り当てられ、すべてのケースで完璧な分布になることは(AFAIK)単純に保証できないからです。テーブルの中にボーダーがある場合、それは非常に明白になります。
私は別のアプローチで、この保証ができない以上、テーブルなんていらない、と言いました。テーブルを模倣するために、divを使用しました。これも行と列の位置の問題があります(主にフローティングの問題で、IE7ではインラインブロックが使えないため、絶対位置決めで適切な位置に配置することになりました)。
私のと非常に似たアプローチのSlick Gridを作った人がいて、これを実現するための良い(複雑ではあるが)例として使うことができる。
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] CSSのdisplayプロパティで遷移する
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] コンテナの幅に応じたフォントの拡大縮小
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み] hr要素の色を変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Bootstrap 3.3.7で改行する方法
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] フレックスアイテムを右寄せにするには?
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] 検索エンジンはAngularJSアプリケーションをどのように扱っているのか?
-
[解決済み] CSSでdivを縦にスクロールできるようにする
-
[解決済み] ボーダーのスタイルがスティッキーポジション要素で機能しない