この SO の質問のコードを使用して、固定テーブル ヘッダーを正常に作成しましたが、それを自分のページに適用する際にいくつか問題があり、それがわかりません。私はJavascript/jQueryに少し慣れていないので、少しご容赦ください。
このコードは、ブラウザーのスクロール イベントに依存して、
THEADがビューの外にあることを検出し、テーブルを複製して、複製したヘッダーをページの上部に配置するタイミングを認識します。
ただし、私のページには、検索バーなどを含むページの上部に固定されたDIVがあり、これが存在する場合、固定ヘッダーは機能しません。固定領域が必要なため、これを回避する方法を見つけるのに苦労しています。おそらく本当に単純ですが、私はそれを見ていません。
コード スニペットは次のとおりです。
function moveScroll() {
var scroll = $(window).scrollTop();
var anchor_top = $("#maintable").offset().top;
var anchor_bottom = $("#bottom_anchor").offset().top;
if (scroll > anchor_top && scroll < anchor_bottom) {
clone_table = $("#clone");
if (clone_table.length === 0) {
clone_table = $("#maintable").clone();
clone_table.attr({
id: "clone"
}).css({
position: "fixed",
"pointer-events": "none",
top: 0
}).width($("#maintable").width());
$("#table-container").append(clone_table);
$("#clone").width($("#maintable").width());
$("#clone").css({
border: "none"
});
$("#clone thead").css({
visibility: "true"
});
$("#clone tbody").css({
visibility: "hidden"
});
var footEl = $("#clone tfoot");
if (footEl.length) {
footEl.css({
visibility: "hidden"
});
}
}
} else {
$("#clone").remove();
}
}
$(window).scroll(moveScroll);
これは、ページの簡素化されたバージョンを含む JSFiddle です。
の CSS セクションを削除する#topsection
と#table-container
、固定ヘッダーが動作していることがわかります。これらのセクションが存在する場合、何も機能しません。
余談ですが、もう1つ問題があります。テーブルで使用border-collapse:collapse
して素敵な境界線を取得すると、Firefox は固定ヘッダーを適切にレンダリングしません。代わりに、完全に空のテーブルを上にレンダリングします。これを回避する方法はありますか?