我已经使用这个 SO question中的代码成功地创建了固定的表头,但是我在将其调整到我的页面时遇到了一些我无法弄清楚的问题。我对 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
您将看到固定的标题在起作用。当这些部分出现时,没有任何作用。
顺便说一句,我还有另一个问题。如果我border-collapse:collapse
在桌子上使用以获得漂亮的边框,Firefox 不会正确呈现固定标题。它会在顶部呈现一个完整的空表。任何想法如何规避这个?