Vor über zwanzig Jahren waren Tabellen die Hauptmethode, um Webseiten in HTML zu erstellen. Sie gaben Webentwicklern eine konsistente Kontrolle über die Erstellung von Seiten mit einem gewissen "Design". Webseiten mussten nicht mehr nur von oben nach unten in linearer Weise aufgebaut sein – sie konnten mit Spalten eingerichtet werden, die sich von links nach rechts *und* von oben nach unten ausrichteten. Damals galt dies als ein riesiger Durchbruch.
Tabellen waren jedoch nie für das Layouten von Seiten konzipiert und haben tatsächlich allerlei Probleme, wenn sie heute auf diese Weise verwendet werden. Es war ein praktischer Hack, aber zu der Zeit ein sehr willkommener, besonders für diejenigen, die ein sehr spezifisches Layout erreichen wollten, das mit früheren Methoden nicht möglich war.
Schnellvorlauf in die heutige Zeit und es ist offensichtlich, dass es mit dem Tabellen-Layout-Ansatz viele Probleme gab. Barrierefreiheit ist ein großes Thema. Die Elemente <table>, <th>, <tr> und <td> sind nicht gerade barrierefrei, besonders wenn sie mehrere Ebenen tief verschachtelt sind. Screenreader – die Geräte, die Webinhalte vorlesen und als Maß für die Barrierefreiheitskonformität dienen – haben Schwierigkeiten, sie in zusammenhängende Inhaltsblöcke zu zerlegen. Das soll nicht heißen, dass Tabellen schlecht sind; sie waren einfach nie als Layout-Mechanismus gedacht.
Schauen Sie sich dieses Tabellen-Layout an. Fühlen Sie sich frei, es mit VoiceOver oder einer anderen Screenreader-Software, auf die Sie Zugriff haben, zu testen.
Ja, dieses Beispiel sieht sehr nach einem typischen Webseiten-Layout aus, ist aber ausschließlich mit einer Tabelle erstellt. Sie können sehen, wie schnell es aufgebläht und unzugänglich wird, sobald wir es für etwas anderes als tabellarische Daten verwenden.
Nachdem wir Tabellen über 20 Jahre lang auf die Folter gespannt haben, könnte man meinen, wir sollten sie ganz vermeiden. Wenn Sie noch nie ein tabellenbasiertes Layout veröffentlicht haben, haben Sie zweifellos Schauergeschichten von denen von uns gehört, die es getan haben, und diese Geschichten sind nie freundlich. Es ist, als hätten wir Tabellen irgendwie zum "Internet Explorer der HTML-Elemente" gemacht.
Aber das ist nicht ganz fair, denn Tabellen erfüllen tatsächlich einen Zweck im Web und sie sind tatsächlich barrierefrei, wenn sie richtig eingesetzt werden.
Tabellen sind dafür konzipiert, semantisch zusammengehörige Daten zu verarbeiten, die am besten in einem linearen Format dargestellt werden. Also ja, wir können Tabellen auch heute noch im Jahr 2020 verwenden, und das wird wahrscheinlich auch noch viele Jahre so bleiben.
Hier wird eine Tabelle verwendet, um genau das anzuzeigen, wofür sie bestimmt ist: tabellarische Daten!
Mit dem Streben nach Webstandards Anfang der 2000er Jahre wurden Tabellen als Layoutlösung zugunsten anderer Ansätze beiseite geschoben, insbesondere der CSS-float-Eigenschaft. Designer und Entwickler freuten sich gleichermaßen, denn zum ersten Mal hatten wir eine echte Trennung von Belangen, die es dem Markup erlaubte, die Markup-Dinge zu tun, die es tun muss, und CSS die visuellen Dinge zu tun, die es tun muss. Das machte den Code sowohl sauberer als auch viel einfacher zu warten, und infolgedessen konnten wir uns tatsächlich auf echte Standards wie Barrierefreiheit und sogar andere Praktiken wie SEO konzentrieren.
Sehen (oder besser gesagt *hören*) Sie den Unterschied in diesem Beispiel?
Viele von uns haben in der Vergangenheit mit Floats gearbeitet. Sie wurden ursprünglich entwickelt, um den Fluss von Inhalt um Bilder zu ermöglichen, die links oder rechts gefloatet sind und sich immer noch im Dokumentfluss befinden. Jetzt, da wir neuere Layout-Funktionen haben – wieder, wie Grid und Flexbox – sind auch Floats irgendwie in den Hintergrund getreten, vielleicht entweder, weil es bessere Möglichkeiten gibt, das zu erreichen, was sie tun, oder weil sie nach langer (missbräuchlicher) Verwendung denselben schlechten Ruf wie Tabellen erhalten haben.
Aber Floats sind immer noch nützlich und relevant! Tatsächlich *müssen* wir sie verwenden, damit die shape-outside-Eigenschaft funktioniert.
Ein legitimer float-Anwendungsfall könnte darin bestehen, Inhalt um eine gestylte <blockquote> herumfließen zu lassen.
CSS-Funktionen wie Grid, Flexbox und Mehrspaltenlayouts gehören zu den wunderbaren Werkzeugen, mit denen wir heutzutage arbeiten. Mit noch mehr Layoutmöglichkeiten, saubererem und barrierefreierem Code werden sie auch in den kommenden Jahren unsere bevorzugten Layout-Ansätze bleiben.
Keine Hacks oder zusätzlicher Code in diesem Flexbox-Beispiel desselben Layouts, das wir im gesamten Artikel betrachtet haben
Wenn Sie also das nächste Mal erwägen, Tabellen oder Floats zu verwenden, greifen Sie mit Zuversicht zu! Nun, wenn die Situation mit ihrem beabsichtigten Verwendungszweck übereinstimmt. Es ist nicht so, dass ich erwarte, dass Sie mit neu entfachter Begeisterung für Tabellen und Floats hier weggehen; nur, dass sie bei richtiger Anwendung durchaus gültige Techniken sind und sogar unverzichtbare Teile unseres gesamten Werkzeugkastens bleiben.
Man könnte einfach Tabellen im Markup verwenden und sie in CSS auf `display: grid` setzen. Man erhält das entsprechende HTML-Markup mit guten Styling-Features. Möglicherweise müssen Sie `display: contents` für `tbody`, `tfoot` und `tr` verwenden.
Technisch ist es möglich, aber es kann schreckliche Auswirkungen auf die Barrierefreiheit in aktuellen Browsern haben: https://adrianroselli.com/2018/02/tables-css-display-properties-and-aria.html
Könnte falsch liegen, aber wenn Sie die `display`-Eigenschaft auf Tabellenelemente setzen, verlieren Sie die semantischen Werte, und die Tabelle wird möglicherweise nicht wie eine Tabelle vorgelesen. Wenn ich mich recht erinnere, gibt es andere seltsame CSS-Fallstricke, die auf Tabellen angewendet werden und die Fähigkeit des Screenreaders beeinträchtigen, die Tabelle wie beabsichtigt zu lesen.
Aber Sie haben viele unnötige Wrapper-Tags: `table` und `th`.
Mit `div`s können Sie weniger Wrapper haben.
Außerdem müssen Sie mehr Code schreiben, um das gesamte Styling bei Tabellen zu deaktivieren. `div` hat standardmäßig nichts außer `display: block`.
Danke.. das war eine nette Rückerinnerung an die Vergangenheit!
Tabellen sind immer noch extrem nützlich, ich würde sagen sogar erforderlich, für das Layout von E-Mails.
Wringer. Wie auf der Waschmaschine Ihrer Großmutter. Sie zog die Wäsche hindurch, bevor sie sie zum Trocknen aufhängte.
Wie in anderen Kommentaren erwähnt, brechen CSS `display`-Eigenschaften die Tabellensemantik. Dies ist ein Problem für Datentabellen. Wenn Sie jedoch von Layout-Tabellen sprechen, müssen Sie zwei Dinge beachten:
A. Sie würden das falsche Element verwenden (obwohl das Hinzufügen von
role="presentation"zum<table>Sie vor einem WCAG SC 1.3.1 Info and Relationships-Fehler bewahren kann); undB. Die Lesereihenfolge kann durcheinander geraten, wenn die Tabelle linearisiert wird (WCAG SC 1.3.2 Meaningful Sequence), obwohl sie für das obige super einfache Beispiel bereits in guter Form ist.
Diejenigen, die Tabellen-Layouts im E-Mail-Bereich und Barrierefreiheit unterstützen müssen, kämpfen immer noch mit diesen Fixes aus den 1990er und 2010er Jahren.
Separaten empfehle ich den Beitrag und das Video von Léonie Watson How screen readers navigate data tables, wenn Sie keine Vorerfahrung haben.
Habe 2009 einen ähnlichen Artikel geschrieben (https://developer.cmzmedia.com/?p=71#more-71). Wir müssen erkennen, dass Tabellen einen richtigen, beabsichtigten Verwendungszweck haben. Danke, dass Sie zur Stimme der Vernunft beitragen.
Hier ist ein kurzer Auszug
Ich bin überrascht, dass im Jahr 2009 immer noch Leute in der Webentwicklungs-Welt gibt, die den richtigen Gebrauch von HTML-Tabellen nicht verstehen.
Angesichts der aktuellen Wirtschaftslage habe ich nur eine geringe Menge an freiberuflicher Webentwicklungsarbeit, brauche aber immer noch einen Vollzeitjob. Ich kontaktiere viele Unternehmen wegen ausgeschriebener Stellen, bekomme aber selten eine Antwort. Vor ein paar Tagen erhielt ich tatsächlich eine Antwort von einem Unternehmen, die vielleicht etwas Licht auf das werfen könnte, was andere, nicht antwortende Unternehmen denken könnten. Nachdem dieses Unternehmen meinen Lebenslauf online überprüft hatte, schrieben sie zurück und sagten:
Es war ihnen egal, dass meine Seite keine HTML-Tabellen für das Seitenlayout verwendete, sondern nur zur Darstellung tabellarischer Daten. Alles, was ihnen wichtig war, war, dass sie irgendwo vage gehört hatten, dass "Tabellen schlecht sind", und sie nahmen diese Idee auf, ohne jemals die Wahrheit herauszufinden.