Under-Engineered Responsive Tables

Avatar of Chris Coyier
Chris Coyier am

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

Ich habe das erste Mal im Jahr 2011 über responsive Datentabellen geschrieben. Als Responsive Webdesign gerade aufkam, gab es kleine Hürden wie Datentabellen, die übersprungen werden mussten. Die Natur von <table> Elementen ist, dass sie eine Mindestbreite haben, die vom Inhalt abhängt, den sie enthalten, und diese kann leicht die Breite eines kleinen Bildschirms überschreiten.

Dieses Bild, das ich damals erstellt habe, deckt das Problem immer noch ziemlich gut ab

Außer… vielleicht sind sie nicht *gleich* schlecht. Wenn das Bild auf der linken Seite scrollbar wäre, dann wäre es vielleicht gar nicht so schlecht. Tatsächlich ist das, was ich kürzlich hier auf CSS-Tricks gemacht habe. Ich halte es für die sicherste Methode, responsive Tabellen zu handhaben, *wenn Sie keine Ahnung haben, welchen Inhalt die Tabelle enthält.* Das ist hier der Fall, wo ich Basis-Tabellenstile festlegen muss, die für jeden Blogbeitrag gelten, der eine Tabelle enthalten könnte.

Der Kern der Idee einer scrollbaren Tabelle ist, sie in ein <div> zu verpacken, das overflow: auto; hat. Dadurch ist die <table> darin frei, die Breite des Elternelements zu überschreiten, aber sie wird die Breite nicht „aufblähen“ und stattdessen eine Scrollleiste auslösen. Das reicht aber noch nicht ganz, also hier ist Adrian Roselli mit den wahren Details. Das umgebende <div> muss fokussierbar und beschriftet sein, also

<div role="region" aria-labelledby="Caption01" tabindex="0">
  <table>
    <caption id="Caption01">Appropriate caption</caption>
    <!-- ...  -->
  </table>
</div>

Wenden Sie dann die Scroll- und Fokusstile an, unter der Bedingung, dass Sie alles andere richtig gemacht haben

[role="region"][aria-labelledby][tabindex] {
  overflow: auto;
}

[role="region"][aria-labelledby][tabindex]:focus {
  outline: .1em solid rgba(0,0,0,.1);
}

Wenn Sie responsive Tabellen weiterentwickeln wollen, gibt es alle möglichen Optionen. Eine der Klassiker ist, viele Elemente auf display: block zu setzen, was bedeutet, dass alle Daten in einer Zeile (<tr>) als ein Stapel von gestapeltem Inhalt zusammengefasst werden, der eine geringere Chance hat, die Breite des Elternelements zu brechen. Sie können alle Datenbeschriftungen mit Pseudo-Elementen richtig darstellen. Aber das macht nur Sinn, wenn einzelne Inhaltszeilen für sich allein Sinn ergeben. Das ist nicht bei jeder Tabelle der Fall. Der Zweck einer Tabelle könnte die Querverweisung von Daten sein, und in diesem Fall haben Sie das mit diesem Ansatz ruiniert. Also wieder, es gibt gute Ansätze für responsive Tabellen, wenn Sie genau den Inhalt und Zweck der Tabelle kennen. Aber die beste responsive Lösung, wenn Sie es *nicht* wissen, ist einfach sicherzustellen, dass sie wischbar sind.

Direkter Link →