Position Sticky und Tabellenüberschriften

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Sie können position: sticky; nicht für ein <thead> verwenden. Auch nicht für eine <tr>. Aber Sie können eine <th> "sticky" machen, was bedeutet, dass Sie tatsächlich Sticky-Header innerhalb einer ganz normalen <table> erstellen können. Das ist knifflig, denn wenn Sie diesen seltsamen Eigenheit nicht kennen würden, könnten Sie es Ihnen schwer verzeihen. Es ist viel sinnvoller, ein übergeordnetes Element wie die Tabellenüberschrift "sticky" zu machen, anstatt jedes einzelne Element in einer Zeile.

Das Problem liegt darin, dass für "Stickiness" position: relative erforderlich ist, und das <thead> und <tr> gemäß der CSS 2.1-Spezifikation nicht anwendbar ist (gilt nicht für <thead> und <tr>).

Es gibt zwei extreme Reaktionen darauf, falls Sie "sticky" Tabellenüberschriften implementieren müssen und die <th>-Umgehung nicht kennen.

  • Verwenden Sie überhaupt keine Tabellen-Markup. Verwenden Sie stattdessen andere Elemente (<div>s und ähnliches) und andere CSS-Layout-Methoden, um den Stil einer Tabelle zu replizieren, aber Sie sind nicht daran gehindert, position: relative zu verwenden und position: sticky-Eltern-Elemente zu erstellen.
  • Verwenden Sie Tabellen-Elemente, aber entfernen Sie alle ihre Standardstile komplett mit neuen display-Werten.

Der erste Ansatz ist gefährlich, weil Sie keine semantischen und zugänglichen Elemente für die Inhalte verwenden, die gelesen und navigiert werden sollen. Der zweite ist fast derselbe. Sie können diesen Weg gehen, müssen aber wirklich vorsichtig sein, semantische Rollen neu anzuwenden.

Aber all das spielt keine Rolle, wenn Sie sich einfach (verstehen Sie den Witz?!) daran halten, den Wert sticky auf diese <th>-Elemente anzuwenden.

Siehe den Pen
Sticky Table Headers with CSS
von Chris Coyier (@chriscoyier)
auf CodePen.

Es ist wahrscheinlich etwas seltsam, Tabellenüberschriften als Zeile mitten in einer Tabelle zu haben, aber es illustriert nur die Idee. Ich stellte mir farbige Kopfzeilen vor, die Spieler auf verschiedenen Sportmannschaften trennen oder so etwas.

Immer wenn ich an Datentabellen denke, denke ich auch daran, wie knifflig es sein kann, sie responsiv zu gestalten. Glücklicherweise gibt es eine Vielzahl von Möglichkeiten, je nachdem, wie die Daten am besten gruppiert und erkundet werden können.