Anonymer Benutzer
Fixierung der Tabellenüberschrift am oberen Rand, wenn der Benutzer sie mit jQuery aus dem Blickfeld scrollt
Ich versuche, eine HTML-Tabelle zu entwerfen, bei der die Kopfzeile oben auf der Seite bleibt, wenn und NUR wenn der Benutzer sie aus dem Blickfeld scrollt. Zum Beispiel kann die Tabelle 500 Pixel nach unten von der Seite, wie mache ich es so, dass, wenn der Benutzer scrollt die Kopfzeile aus der Sicht (Browser erkennt seine nicht mehr in der Windows-Ansicht irgendwie), wird es an der Spitze setzen bleiben? Kann mir jemand eine Javascript-Lösung für dieses Problem nennen?
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
<tr>
<td>info</td>
<td>info</td>
<td>info</td>
</tr>
</tbody>
</table>
Also im obigen Beispiel möchte ich, dass die Kopfzeile mit der Seite scrollt, wenn sie aus dem Blickfeld verschwindet.
WICHTIG: Ich bin NICHT auf der Suche nach einer Lösung, bei der das <tbody>
eine Bildlaufleiste hat (overflow:auto).
136
3
Sie würden so etwas tun, indem Sie den "scroll"-Ereignishandler von "window" anzapfen und eine andere "table" mit einer festen Position verwenden, um die Kopfzeile oben auf der Seite anzuzeigen.
HTML:
CSS:
JavaScript:
Damit wird der Tabellenkopf eingeblendet, wenn der Benutzer so weit nach unten scrollt, dass der ursprüngliche Tabellenkopf ausgeblendet wird. Er wird wieder ausgeblendet, wenn der Benutzer die Seite wieder weit genug nach oben gescrollt hat.
Arbeitsbeispiel: http://jsfiddle.net/andrewwhitaker/fj8wM/
Nun, ich habe versucht, den gleichen Effekt zu erzielen, ohne auf Spalten mit fester Größe zurückzugreifen oder eine feste Höhe für die gesamte Tabelle zu haben.
Die Lösung, die ich gefunden habe, ist ein Hack. Sie besteht darin, die gesamte Tabelle zu duplizieren und dann alles bis auf die Kopfzeile auszublenden, die dann eine feste Position hat.
HTML
javascript
Ich war in der Lage, das Problem mit der Änderung der Spaltenbreiten zu beheben. Ich begann mit Andrew's Lösung oben (vielen Dank!) und fügte dann eine kleine Schleife, um die Breiten der geklonten td's gesetzt:
Damit ist das Problem gelöst, ohne dass ich die gesamte Tabelle klonen und den Körper ausblenden muss. I'm ganz neu zu JavaScript und jQuery (und zu Stack Overflow), so dass alle Kommentare geschätzt werden.