Feststehender Tabellenkopf - Nur CSS
Einfach position: sticky; top: 0;
zu Ihren th
Elementen hinzufügen. (Chrome, FF, Edge)
.tableFixHead { overflow: auto; height: 100px; }
.tableFixHead thead th { position: sticky; top: 0; z-index: 1; }
/* Normale Tabelleneigenschaften. Wirklich. */
table { border-collapse: collapse; width: 100%; }
th, td { padding: 8px 16px; }
th { background:#eee; }
TH 1TH 2
A1A2
B1B2
C1C2
D1D2
E1E2
Für sowohl vertikale TH und horizontale TH-Spalten (innerhalb von TBODY
):
.tableFixHead { overflow: auto; height: 100px; width: 240px; }
.tableFixHead thead th { position: sticky; top: 0; z-index: 1; }
.tableFixHead tbody th { position: sticky; left: 0; }
.tableFixHead { overflow: auto; height: 100px; width: 240px; }
.tableFixHead thead th { position: sticky; top: 0; z-index: 1; }
.tableFixHead tbody th { position: sticky; left: 0; }
/* Normale Tabelleneigenschaften. Wirklich. */
table { border-collapse: collapse; width: 100%; }
th, td { padding: 8px 16px; white-space: nowrap; }
th { background:#eee; }
TH 1TH 2
FooSome long text lorem ipsumDolor sit amet
BarB1B2
BazC1C2
FuzD1D2
ZupE1E2
TH-Rahmen Problem beheben
Da border
auf einem übersetzten TH
Element nicht richtig dargestellt werden kann, verwenden Sie die box-shadow
Eigenschaft, um "Rahmen" zu erstellen und anzeigen zu lassen:
/* Rahmen (falls benötigt) */
.tableFixHead,
.tableFixHead td {
box-shadow: inset 1px -1px #000;
}
.tableFixHead th {
box-shadow: inset 1px 1px #000, 0 1px #000;
}
.tableFixHead { overflow: auto; height: 100px; }
.tableFixHead thead th { position: sticky; top: 0; z-index: 1; }
/* Normale Tabelleneigenschaften. Wirklich. */
table { border-collapse: collapse; width: 100%; }
th, td { padding: 8px 16px; }
th { background:#eee; }
/* Rahmen (falls benötigt) */
.tableFixHead,
.tableFixHead td {
box-shadow: inset 1px -1px #000;
}
.tableFixHead th {
box-shadow: inset 1px 1px #000, 0 1px #000;
}
TH 1TH 2
A1A2
B1B2
C1C2
D1D2
E1E2
TH-Sticky funktioniert nicht - Problembehebung
Vergewissern Sie sich, dass Elternelemente des "th
" Elements, mindestens bis zum table
Element (einschließlich), keine mit overflow
zusammenhängenden Styles festlegen (z.B. overflow
, overflow-x
, overflow-y
).
Weitere Informationen finden Sie auf stackoverflow.com/Warum funktioniert 'position: sticky' nicht?
Feststehender Tabellenkopf - Verwendung von JavaScript
Für alte Browser können Sie ein wenig JS verwenden und die th
Elemente mit translateY verschieben
// Beispiel für die Behebung des Tabellenkopfs:
function tableFixHead(evt) {
const el = evt.currentTarget,
sT = el.scrollTop;
el.querySelectorAll("thead th").forEach(th =>
th.style.transform = `translateY(${sT}px)`
);
}
document.querySelectorAll(".tableFixHead").forEach(el =>
el.addEventListener("scroll", tableFixHead)
);
.tableFixHead {
overflow-y: auto;
height: 100px;
}
/* Normale Tabelleneigenschaften. */
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
padding: 8px 16px;
}
th {
background: #eee;
}
TH 1TH 2
A1A2
B1B2
C1C2
D1D2
E1E2