Wenn Sie auf einer Seite mit einer langen Tabelle nach unten scrollen, verschwindet normalerweise die Kopfzeile der Tabelle und wird nutzlos. Dieser Code klont die Tabellenkopfzeile und wendet sie am oberen Rand der Seite an, sobald Sie darüber hinaus gescrollt haben, und sie verschwindet, wenn Sie an der Tabelle vorbeigescrollt sind.
Heutzutage ist es wahrscheinlich besser, position: sticky; anstelle von JavaScript zu verwenden. Sie müssen jedoch selbst die Entscheidung bezüglich der Browserunterstützung treffen.
function UpdateTableHeaders() {
$("div.divTableWithFloatingHeader").each(function() {
offset = $(this).offset();
scrollTop = $(window).scrollTop();
if ((scrollTop > offset.top) && (scrollTop < offset.top + $(this).height())) {
$(".tableFloatingHeader", this).css("visibility", "visible");
$(".tableFloatingHeader", this).css("top", Math.min(scrollTop - offset.top, $(this).height() - $(".tableFloatingHeader", this).height()) + "px");
}
else {
$(".tableFloatingHeader", this).css("visibility", "hidden");
$(".tableFloatingHeader", this).css("top", "0px");
}
})
}
$(document).ready(function() {
$("table.tableWithFloatingHeader").each(function() {
$(this).wrap("<div class="divTableWithFloatingHeader" style="position:relative"></div>");
$("tr:first", this).before($("tr:first", this).clone());
clonedHeaderRow = $("tr:first", this)
clonedHeaderRow.addClass("tableFloatingHeader");
clonedHeaderRow.css("position", "absolute");
clonedHeaderRow.css("top", "0px");
clonedHeaderRow.css("left", "0px");
clonedHeaderRow.css("visibility", "hidden");
});
UpdateTableHeaders();
$(window).scroll(UpdateTableHeaders);
});
Sehen Sie sich den Pen
ALTE jQuery-Technik: Persistente Kopfzeilen von Chris Coyier (@chriscoyier) an
auf CodePen.
Gute Idee, ich denke, sie braucht einige Verbesserungen. Sie ist ziemlich ruckelig.
Funktioniert nicht in IE7, schade :(
Das funktioniert in IE7 einwandfrei.
Eigentlich funktioniert es in IE7 unter IE7-Standards nicht...
(Verwendung von IE9 — Entwicklertools — Browser-Modus: IE7, Dokument-Modus: IE7-Standards)
Es klont die Kopfzeile, aber es macht sie nicht persistent auf der Seite. Ich versuche immer noch, eine Lösung dafür zu finden.
Das ist genau das, was ich gesucht habe, danke
Laxman Parmar
Das Problem tritt auf, wenn die Tabelle breiter ist als ihr Container und eine horizontale Scrollleiste erscheint, was bei Berichten sehr häufig vorkommt.
In diesem Fall sollte die geklonte Kopfzeile zusammen mit der Tabelle horizontal scrollen können. Bisher habe ich keine richtige Lösung für dieses Problem gefunden.
Funktioniert das auf einem iPhone?
Ich habe gerade auf meinem iPhone nachgesehen, es funktioniert IRGENDWIE, nicht iPhone-geschmeidig, aber immer noch näher als die meisten anderen Versuche, die ich bisher online gefunden habe.
Großartig, es ist genau das, wonach ich gesucht habe.
Was mache ich, wenn ich eine feste Kopfzeile von 200px Höhe habe und der Inhalt 200px darunter beginnt? Wie kann ich den Versatz für meine Tabellenkopfzeilen ändern?
Danke
Das ist wirklich nützlich.
Schön... das hat meiner Website einen tollen Look verliehen http://www.wrangle.in
Vielen Dank dafür :)
Sehr schön.
Gibt es eine Möglichkeit, die Kopfzeile innerhalb eines Divs mit automatischem Scrollen (overflow:auto;) persistent zu machen?
Vielen Dank.
Das ist in Ordnung, aber wenn ich scrolle, ändert sich die Breite jeder Spalte der Kopfzeile im Vergleich zu den entsprechenden Inhaltszeilen... Irgendwelche Ideen?
Habe gerade dasselbe Problem, ich schaue mal, was ich herausfinden kann...
Ich habe es für meine Seite hingebastelt
Ich bin mir ziemlich sicher, dass es bei Rahmen oder anderen Dingen sehr leicht kaputt geht, aber für mich funktioniert es.
Hallo, vielen Dank für das Skript. Es funktioniert perfekt.
Ich habe eine Frage.
In Ihrem Skript klonen Sie die erste TR aus der Tabellenkopfzeile.
Können Sie mir sagen, wie ich Ihren Code verwenden kann, wenn ich zwei Zeilen darin habe?
Generell fügt Ihr Skript nur die erste Zeile in ein schwebendes DIV ein.
Vielen Dank im Voraus für Ihre Hilfe!
Kris
Gute Idee, ich denke, sie braucht einige Verbesserungen. Sie ist ziemlich ruckelig.