Seit ich erstmals darüber berichtet habe, gab es eine Menge Ansätze für responsive Datentabellen.

Die Idee des Originals war, das Rasterlayout der Tabelle aufzugeben und jede Zelle zu einer eigenen Zeile zu machen. Jede dieser Zeilen wird mit einem Pseudo-Element beschriftet. Dies ergibt eine wesentlich höhere Tabelle, die mehr vertikales Scrollen erfordert, aber kein horizontales Scrollen. Es ist einfacher, die Daten zu durchsuchen, ohne den Kontext dessen zu verlieren, was was ist. Der Nachteil ist, dass Sie möglicherweise den Kontext des Datenvergleichs verlieren, da Sie keine Zellen von Daten mehr direkt neben anderen Zellen dieses Typs sehen.
Mobifreaks veröffentlichte eine sehr ähnliche Idee, die die gleiche Layoutänderung und Pseudo-Element-Beschriftung verwendet. Sie verwendeten HTML5 data-* Attribute für die Beschriftung, wodurch benutzerdefiniertes CSS für verschiedene Tabellen überflüssig wird. Ich glaube nicht an den SEO-Teil, aber der Code ist gut.
Derek Pennycuff nahm das Original und wendete das „Mobile First“-Konzept an. Anstatt mit Tabellen-Markup zu beginnen, beginnt es mit Definition List-Markup und zwingt es dann in ein Tabellenlayout, wenn der Bildschirm groß genug ist, um es zu verarbeiten. Während ich das Denken hier liebe, bin ich mir nicht sicher, ob mir gefällt, was es braucht, um es zu erreichen. Das Markup ist viel schwerer und (ironischerweise) meiner Meinung nach nicht semantisch. Tabellarische Daten sollten als Tabelle markiert werden. Ich denke, die Philosophie hinter „Mobile First“ ist, die Dinge standardmäßig einfach und leichter zu halten und für größere Bildschirme schwerer und komplexer. Diese Demo beginnt und bleibt schwer.
Drew Dyksterhouse erstellte eine Demo, die berechnet, wo die Tabelle unterbrochen werden soll, indem sie misst, ob die Tabelle breiter als der Bildschirm geworden ist, und dann diesen Breakpoint zur Effizienz speichert.
Scott Jehl entwickelte zwei clevere Ideen. Eine bestand darin, aus den Daten in der Tabelle ein Diagramm zu erstellen. In dieser Demo ist es ein Tortendiagramm, das viel schmaler ist als die vollständige Datentabelle und daher besser für kleine Bildschirme geeignet ist.

Ziemlich cool, aber offensichtlich können nicht alle Tabellen in Diagramme umgewandelt werden. Ich würde auch argumentieren, dass eine Datentabelle und ein Diagramm ziemlich unterschiedliche Dinge sind. Wenn Sie sich die Mühe machen, ein Diagramm zu erstellen, wäre es wahrscheinlich gut, dies auch dem größeren Bildschirm zu zeigen, da es den Kontext auf eine nützliche alternative Weise liefert. Oder zumindest die Option haben, es zu sehen.
Scotts andere Idee konzentriert sich auf das Problem, dass große Datentabellen die Breite eines übergeordneten Containers über das hinaus dehnen können, was ein kleiner Bildschirm darstellen kann. Um dies zu verhindern, wird eine Media Query verwendet, um die Tabelle auf kleinen Bildschirmen zu verbergen und sie durch eine kleine Mock-Tabelle und einen Link zur Ansicht der vollständigen Tabelle zu ersetzen.

Stewart Curry hatte die Idee, einfach weniger wichtige Spalten auszublenden für kleinere Bildschirme. Einer der frühesten Kritikpunkte an mobilspezifischen Websites war, dass nur weil sie sich auf einem Mobilgerät befinden, sie kein weniger als vollständiges Erlebnis als ein Benutzer mit einem größeren Bildschirm verdienen (insbesondere da diese Geräte völlig in der Lage sind, mit „vollständigen“ Websites zu navigieren).

Ich denke jedoch, Stewart war auf dem richtigen Weg. Kleine Bildschirme zu nutzen, um Informationen auf die wichtigsten Dinge zu konzentrieren, ist großartig, es sollte nur keine Informationen ohne Rückgriff einschließen. Maggie Costello Wachs von Filament Group hatte auch die Idee, nicht essenzielle Spalten auf kleineren Bildschirmen auszublenden, aber auch ein Dropdown-Menü bereitzustellen, in dem Sie sie bei Bedarf wieder aktivieren können (was Sie durch horizontales Scrollen sehen können).

David Bushell ging auch die Idee an, das grundlegende Tabellenformat nicht zu ändern, aber dennoch das Problem des „zu breiten“ zu lösen. Sein Konzept dreht die Tabelle auf die Seite und wendet overflow-x: auto auf das tbody an, was bedeutet, dass die Datenzellen nach links und rechts scrollen können, wenn sie aus einem kleinen Bildschirm herausfallen, aber Sie immer noch die Kopfzeilen sehen (als ob sie eine feste Position hätten).

Brad Czerniak hat eine Idee namens Rainbow Tables, bei der auf kleineren Bildschirmen die Gitterstruktur der Tabelle aufgegeben wird und die Datenzellen so eng wie möglich zusammengepresst werden, während sie immer noch eine „Zeile“ sind. Anstatt die Daten anhand der Spalte zu identifizieren, werden die Daten farbkodiert, um einem Schlüssel zu entsprechen.

Update 26. Mai 2012: Zurb hat eine neue Technik veröffentlicht. Sie konzentriert sich darauf, dass die linkeste Spalte die „Schlüssel“-Spalte ist. Auf breiten Bildschirmen ist es nur eine normale Spalte. Auf kleinen Bildschirmen wird sie fest/haftend links und die restlichen Spalten können scrollen. Dies ermöglicht den Vergleich von Zeile zu Zeile.
Es ähnelt David Bushells Technik mit der festen linken Spalte, ist aber vielleicht robuster, da sie JavaScript für ein wenig DOM-Manipulation und Bildschirmgrößenmessung verwendet. Zusätzliche Abhängigkeiten, tiefere Unterstützung, Ihre Entscheidung.

Aktualisierungen
Hier sind noch ein paar weitere, die aufgetaucht sind
- Filament Group kombinierte mehrere der besten Muster zu einer „Gruppe von Plugins für responsive Tabellen“ namens Tablesaw.
- Stackable.js
- FooTable
- jQuery-rt-Responsive-Tables
- RWD-Table-Patterns
Außerdem hat Jason Grigsby einen Artikel zur Auswahl einer Lösung basierend darauf, was der Benutzer mit der Tabelle machen möchte.
Um dieses Problem noch schwieriger zu machen, überlegen Sie, mit welchem Markup Sie beginnen müssten, damit die Daten ohne CSS und ohne JavaScript funktionieren. Die Idee ist dann, dass sie in E-Mails und RSS und so weiter gelangen und in Ordnung sind. Ich habe versucht, das hier zu lösen. Es ist ziemlich unordentlich, aber es funktioniert.
Meine Favoriten sind Ihre Idee und die, bei der Sie ausgewählt haben, welche Daten angezeigt werden sollen.
Sehr schöne Sammlung und Beispiele. Ich habe in letzter Zeit nach Wegen gesucht, dieses Thema anzugehen. Ob man die Schriftgröße verringern oder Spalten über nth-child weglassen soll.
Das Tortendiagramm-Beispiel ist besonders beeindruckend. Das werde ich definitiv ausprobieren müssen. Danke für die Ressourcen!
Ich würde Ihre Idee etwas abändern, indem ich zunächst nur Vor- und Nachnamen anzeige und nach dem Klicken den Rest der verfügbaren Informationen für die Person anzeige, deren Zeile Sie angeklickt haben.
Wahrscheinlich mit jquery höhenänderung in overflow-x hidden, wenn ich darüber nachdenken würde, wie ich es machen soll.
Ich glaube, das ist kein Problem, denn die falsche Prämisse hier ist, dass man immer alles an die Bildschirmgröße anpassen muss. Es ist immer, und ich meine immer, eine Suche nach Narrengold, wenn man versucht, jede Bildschirmgröße vorherzusehen und sich darauf vorzubereiten. Besonders seltsame und unbeholfene.
Man muss sich darauf konzentrieren, wie man tabellarische Daten leichter durchsuchen kann, nicht darauf, sich selbst Ziele zu setzen, die dem Benutzer nicht viel helfen, sondern ihn stattdessen mit unbeholfener Benutzererfahrung zur Weißglut treiben.
Wenn Tabellen auf einem bestimmten mobilen Gerät nicht einfach zu durchsuchen sind, dann ist es sicher anzunehmen, dass so ziemlich alles andere auch nicht einfach ist. Dann wäre diese Person gezwungen, ein besseres Gerät zu kaufen, oder sie wird niemals Anstrengungen wie das Schrumpfen von Tabellen zu schätzen wissen, da sie nicht dieser Typ Benutzer ist.
Und neuere mobile Geräte verfügen über harte und weiche Fähigkeiten, die das Anzeigen von Tabellen zu einem Nicht-Thema machen. Die Hauptsorge ist also eigentlich nicht die Breite oder Höhe der Tabelle, sondern ihre Lesbarkeit auf den ersten Blick.
Oh, und nichts Neues hier: Der Teil, bei dem die Spalten in Zeilen umgewandelt werden, wurde seit den MS-DOS-Tagen in FoxPro verwendet.
Wir hatten damals auch ziemlich große Tabellen, und das Scrollen auf einem 80 Zeichen breiten Bildschirm war völlig in Ordnung :)
Toller Artikel. Eine sehr interessante Kombination von Ideen hier.
Ich finde, dass die Lösungen von Maggie Costello und David Bushell in Bezug auf die Benutzerfreundlichkeit am stärksten sind. Die wichtigsten/relevantesten Daten sofort verfügbar zu machen, ohne das Interface-Design zu sehr zu beeinträchtigen, scheint in diesem Szenario ein Gewinn zu sein.
Ich schätze die Kombination von Bildern mit den Beschreibungen hier sehr. Es machte es sehr einfach, den Konzepten des Artikels zu folgen und sie zu verstehen.
Das ist ein toller CSS-Trick! Ich frage mich jedoch, warum Sie eine statische Website (HTML/CSS) für dynamische Informationen verwenden? Es gibt andere Webanwendungen, z. B. ein CMS, die dynamische Reporting-Informationen durch einfachen PHP-Code generieren könnten. Denken Sie an die Stunden, die für das Styling der Tabelle und die Eingabe der sich ständig ändernden Daten aufgewendet werden; daher der Begriff „dynamisch“.
Meine Stimme geht an David Bushells Idee. Ich denke, das ist die beste Option, die ich bisher gesehen habe.
Hervorragende Tricks. Glückwunsch zum Webseiten, ich mag sie!
+1 für die Idee von David Bushell von mir. Spalten in Zeilen umwandeln, je nachdem, welche länger ist.
Sie könnten dies auch hinzufügen, um iOS 5-Benutzern eine Scrollleiste zu geben.
overflow: scroll;
-webkit-overflow-scrolling: touch;
Ich weiß, dass jede Tabelle aufgrund Ihrer Daten und ihres Zwecks unterschiedlich sein wird… aber insgesamt ist David Bushells Lösung GROSSARTIG! Die Erfahrung ist perfekt auf dem iPhone.
Vielen Dank für Ihre produktiven Beispiele!!! GROSSARTIG
Großartig, bis heute weiß ich nicht viel über diese responsiven Tabellen… nochmals vielen Dank!
Schöne Zusammenfassung. Ich liebe eine schöne Tabelle! ;)
Das kommt direkt in meine Lesezeichen. Jetzt, wenn ich nur noch ein Projekt finden könnte, um es zu implementieren. Jedes Seitenelement muss ohne JS responsiv sein können
Super Tricks! Meine Glückwünsche zum Webseiten =)
Warum gratulieren die Leute Ihnen zur Webseite? Habe ich etwas verpasst?
nette Tutorials mit tollem Design
Sehr gute Zusammenfassung und eine, die ich bookmarken werde. Responsives Webdesign ist der einzige Weg, neue Websites zu bauen, aber die Bewältigung realer Probleme wie diesem ist etwas, womit wir uns alle auseinandersetzen müssen. Es ist einfach, Portfolio-Websites responsiv zu erstellen, aber die Erstellung komplexer datengesteuerter Dinge ist eine andere Sache, und die Vielzahl unterschiedlicher Layouts für verschiedene Elemente auf großen Websites wird mir noch eine Weile Kopfzerbrechen bereiten. Großartige Sache, danke.
Ich habe das IE display Block-Problem gelöst, indem ich alle Tabellen-Selektoren über jQuery durch DIVs ersetzt habe. Ich habe Ihr CSS verwendet, und ich denke, das ist eine gute Lösung.
http://www.useyourfred.com/2012/01/js-in-my-sexy-responsive-data-tables/
Ich hoffe, das hilft weiter!
Ich habe Ihre Idee ausprobiert, aber sie wird auf meiner Website sehr selten angezeigt… huuuufhh.. schauen Sie http://lintas5.com/
+1 für David Bushels Lösung. Scheint perfekt.
Ich stimme David Bushels Lösung zu. Sie ist phänomenal. Ich kann es kaum erwarten, sie auszuprobieren.
Eine Version, die ich noch nicht gesehen habe, ist die Organisation einer Vergleichstabelle, deren Kriterien in der ersten Spalte statt in der Kopfzeile stehen und die Daten spaltenweise statt zeilenweise gelesen werden.
Hallo,
Ich mag die gesamte Zusammenfassung hier, die zeigt, dass wir auf eine definitive Lösung zusteuern. Was ich gerne sehen würde, ist Ihre ursprüngliche Idee, und anstatt die gesamten Daten in einer vertikalen Scrollansicht anzuzeigen, verwenden Sie CSS3 und :target, um Tabs zu erstellen, bei denen jeder Tab eine Instanz eines Zeilensatzes ist. Was erhalten Sie? Eine einzelne Ansicht von Daten mit Tabs [1] [2] [3] … der restlichen Daten.
Ich weiß wirklich nicht, ob das möglich ist, vielleicht ist es einen Versuch wert. Hat jemand Interesse?
Wow! Das ist, was ich brauche. Ist das als WP-Plugin erhältlich?
Das ist zweifellos ein Problem bei der reibungslosen Integration responsiver Themes. Tabellarische Daten sind echte Daten, die auf vielen Websites allgegenwärtig sind, und ich würde gerne einen Weg finden, dies innerhalb eines mobilen Viewports zu realisieren.
Was für Smartphones gut wäre, wäre, wenn wir es irgendwie wie ein Multi-Pane-Element behandeln könnten und es Pane für Pane durchscrollen, ähnlich wie man es mit einem Plugin wie jQuery Tools Scrollable machen würde.
Hallo Chris
Ich genieße immer Ihre Beiträge.
FYI – Ich bin auf ein Problem mit dem responsiven Tabellenansatz auf iOS 5.0.1 / Mobile Safari gestoßen. Wenn die Tabelle ungefähr 40 Zeilen hatte, stürzte Safari einfach ab.
Android 2.x war in Ordnung.
Ich habe mich auf ein paar wilde Jagden begeben und dachte, es läge am Skript, aber letztendlich habe ich es auf das `thead tr absolute with top/left -9999px` zurückgeführt. Das habe ich entfernt und auf `display:none` gesetzt, und das Problem war gelöst.
Wenn Sie es auf `display:none` setzen, wird es für Screenreader ausgeblendet.
Es gibt verschiedene Techniken, um Elemente visuell zu verbergen, während sichergestellt wird, dass sie auf allen Geräten zugänglich sind.
Bei Chris' Technik leidet Safari möglicherweise unter Leistungsproblemen aufgrund des Viewports. Safari verließ sich zum Zeitpunkt Ihrer Veröffentlichung stark auf Elemente mit absoluter Positionierung. Versuchen Sie, mobile Geräte mit einem kleineren Prozentsatz anzusprechen. Versuchen Sie -100em (hören Sie auf, Pixel zu verwenden! Es ist nicht 2003) und sehen Sie, ob die Leistung steigt.
Hallo ..
Ich wollte nur Ihre Aufmerksamkeit auf einen weiteren interessanten Ansatz lenken… (Nicht rein CSS, aber)
http://filamentgroup.com/lab/responsive_design_approach_for_complex_multicolumn_data_tables/
Das ist ein wirklich toller Artikel!!! Danke fürs Posten!
Die Zurb-Implementierung ist speziell für Tablets und kleine Desktop-Auflösungen großartig. Ihre Code ist jedoch nicht optimiert. Sie fragen zwei Pseudoselektoren in jQuery ab. Das ist ein großes No-No. (Keine Beleidigung, Leute).
Ich bin ein wenig eingerostet mit meinem jQuery, aber ich kann den Code beschleunigen, indem ich einen der Pseudoselektoren darauf beschränke, als natives JS zu rendern
Statt
copy.find('td:not(:first-child), th:not(:first-child)').css('display', 'none').addClass('hidden visuallyhidden');
Mach das
copy.find('td, th').not(':first-child').css('display','none').addClass('hidden visuallyhidden');
Nochmal, ich bin mit meinem jQuery eingerostet, aber was Sie wollen/brauchen, ist so etwas wie $var.find(‘td,th’).not().first()….. oder first().not()… was auch immer…
Jemand anderes kann wahrscheinlich etwas dazu beitragen.
Als Faustregel gilt: Die Verwendung von Pseudoselektoren in jQuery ist praktisch, aber Ihre Leistung wird darunter leiden.
Ich liebe diesen Artikel! Ich denke, dieser Bereich braucht viel Forschung, zum Beispiel ist die Idee, zusätzliche Tabellenspalten einschalten zu können, eine großartige Idee, aber ich möchte ein Demo (nur Proof of Concept) anbieten, das jeder erweitern kann, um dies zu tun. Es verwendet Ihr Konzept des Tabellenspalten-Hoverings und funktioniert von modernen Smartphones (unter Verwendung von 4s als Basislinie), iPads und PCs.
http://codepen.io/Lewiscowles1986/full/iLdDx
Schlechte Dinge sind
Verwendet feste Positionierung
Benötigt zusätzliche Steuerlogik, um Anzeige-/Benutzungsfehler/-probleme zu vermeiden
Auf kleinen Geräten sieht es riesig aus
Positives
Alle Daten jederzeit verfügbar, unabhängig vom Formfaktor
Verwendet vertikale Navigation mit horizontalem Aspekt
Ermöglicht Basis-/Hauptspalte
hauptsächlich CSS (knapp unter 25 Zeilen jQuery im PoC)
kein !important verwendet, damit Sie Ihre eigene Ansicht erzwingen können
Unterstützt gängige tabellarische Elemente wie umschaltbare Banding, Hover-Effekte auf Zeilen- und Spaltenebene und Überschriften (Fußzeilen sind trivial zu implementieren).
Guter Beitrag! Viele clevere Ideen. Ich habe das Gefühl, es fehlt an einfachen, pragmatischen Lösungen.
Nachdem ich gelesen hatte, habe ich Folgendes zusammengestellt
http://jonathanstark.com/labs/double-zebra-responsive-tables/
Weniger als 20 Zeilen CSS
Benötigt kein Javascript
Prost!
jonathanstark
Interessant, aber es funktioniert nicht in IE9. Wirklich responsives Design sollte abwärtskompatibel sein und gut auf mobilen Geräten funktionieren. Aber ich mag das horizontale Scrollen, wie in Kelly Cooks Beispiel unten. (Das funktioniert auch in IE9 im Kompatibilitätsmodus, Kelly. Gut gemacht!) Ich denke, eine Kombination aus Ihren und Kellys Ansätzen, zusammen mit Maggies Konzept, dem Benutzer das Ein- und Ausschalten von Spalten zu ermöglichen, damit der Benutzer sich auf die exakten Daten konzentrieren kann, die er gerade benötigt, könnte der beste Weg sein. Jetzt könnten wir nur noch ein funktionierendes Beispiel finden, das diese Techniken zusammenführt und auch webzugänglich ist, ich glaube, wir hätten einen echten Gewinner.
Vielen Dank für diesen Artikel. Nachdem ich jede der vorgestellten Lösungen ausprobiert hatte, war ich mit den Ergebnissen immer noch nicht zufrieden. Ich beschloss, einen Mashup meiner Lieblingsteile der oben genannten Lösungen zu erstellen und kam zu folgendem Ergebnis: http://kellycook.github.io/responsive-tables/.
Es verwendet Ihre ursprüngliche Lösung, aber anstatt CSS zu verwenden, um die gefälschten Tabellenkopfzeilen anzuzeigen, habe ich das data-label-Konzept von Mobifreaks verwendet. Dann fügte ich einen Wrapper um die Tabelle und gab ihm `overflow: auto`, damit Browser bis IE9 eine horizontale Scrollleiste erhalten. Nochmals vielen Dank!!
Das geht an den Kern meiner Suche nach Antworten auf den „geräteunabhängigen“ Ansatz für das Web: Wie beantworten wir Design- und Usability-Fragen wie diese, während wir auf die Bedürfnisse der größten Nutzergruppe reagieren? Ich nehme an, die Validierung für jedes Projekt würde es Entwicklern und Designern ermöglichen, fundierte Entscheidungen zu treffen, aber wir haben nicht immer diese Luxus. Wie entscheiden alle anderen zwischen diesen Optionen?
Es war sehr schwierig, eine responsive Tabelle zu erstellen, die von allen Geräten aus betrachtet werden kann. Kann dieses Tutorial für Blogger-Vorlagen verwendet werden, da ich die Standardvorlage von Blogger verwende?
http://joshnh.com/weblog/getting-responsive-tables-to-behave/