Heutzutage springen alle auf den responsiven Zug auf. Neben responsiven Layouts wird alles responsiv: Slider, Lightboxen, Galerien, was auch immer! Aber eines Tages, als ich an einer HTML-Tabelle mit vielen Spalten arbeitete, dachte ich: „Wie wird das auf meinem iPhone aussehen?“. Dann suchte ich nach „responsive tables“ und fand Chris' Roundup-Post zu einigen Lösungen.
Warum FooTable entwickeln?
Es gab bereits einige Lösungen für responsive Datentabellen, darunter
- Zurbs, die die Tabelle auf kleineren Geräten horizontal scrollt.
- Dave Bushells, die die Tabelle auf die Seite dreht.
- Filament Groups Lösung lässt den Benutzer die anzuzeigenden Spalten auswählen.
- Stewarts Curry versteckt weniger wichtige Spalten.
- Chris Coyiers, der die Daten für jede Zeile in einer Liste gruppiert und die Spalten verschwinden.
Mir gefiel, was einige der responsiven Tabellenlösungen taten, aber keine davon hat mich vollständig „gepackt“. Also tat ich mich mit meinem Freund Steve zusammen, der ein jQuery-Guru ist, und wir begannen an einem neuen jQuery-Plugin. Wir mochten das Konzept der verschwindenden Spalten sehr, aber wir wollten immer noch die Möglichkeit haben, diese versteckten Daten irgendwie zu sehen. Wir mochten auch Chris' Konzept, die Spalten in Zeilen umzukehren, also beschlossen wir, beide Konzepte zu kombinieren und FooTable wurde geboren.
Wie funktioniert FooTable?
FooTable ist sehr einfach
- Es blendet bestimmte Datenspalten bei unterschiedlichen Auflösungen aus (wir nennen diese Breakpoints).
- Zeilen können erweitert werden, um die ausgeblendeten Daten anzuzeigen.

Konfiguration über Datenattribute
Steve und ich haben beide mit anderen Tabellen-Plugins gearbeitet, wie dem erstaunlichen datatables.net, aber wir fanden sie wirklich schwierig und unintuitiv zu konfigurieren. Deshalb kamen wir auf die Idee, Datenattribute zu verwenden, um FooTable mitzuteilen, wie Dinge zu tun sind. Das macht es auch für andere Entwickler, die Ihren Code unterstützen, einfacher zu sehen, was Sie tun. Schauen Sie sich zum Beispiel die folgende einfache Tabellenkopf-Markup an
<table class="footable" data-filter="#filter">
<thead>
<tr>
<th data-sort-initial="descending" data-class="expand">
First Name
</th>
<th data-sort-ignore="true">
Last Name
</th>
<th data-hide="phone,tablet">
Job Title
</th>
<th data-hide="phone,tablet" data-type="numeric">
DOB
</th>
<th data-hide="phone" data-type="numeric">
Status
</th>
</tr>
</thead>
...
</table>
Man kann ziemlich einfach, nur aus dem Markup, erkennen, dass die Tabelle wie folgt funktionieren wird
- Die Tabelle wird nach einem Eingabefeld mit der ID „filter“ gefiltert (data-filter=„#filter“)
- Die Tabelle wird anfangs nach der Spalte „Vorname“ sortiert und zwar absteigend (data-sort-initial=„descending“)
- Die Spalte „Nachname“ kann nicht sortiert werden (data-sort-ignore=„true“)
- Die Spalten „Job Title“ und „DOB“ werden auf Telefonen und Tablets ausgeblendet (data-hide=„phone,tablet“)
- Die Spalte „Status“ wird auf Telefonen ausgeblendet (data-hide=„phone“)
- Die Spalten „DOB“ und „Status“ verwenden numerische Daten (data-type=„numeric“)
Das ist doch mal was!
Editor-Hinweis: Die Verwendung von data-* Attributen zur Steuerung des Plugin-Verhaltens ist in letzter Zeit sehr beliebt (siehe Twitter Bootstrap). Würde mich über Gedanken dazu in den Kommentaren freuen.
Verwendung
Sie haben das Markup gesehen, das ist die Datentabelle selbst mit integrierter Konfiguration, wie sie sich verhalten soll.
Sie benötigen auch jQuery, das Plugin selbst und Ihren eigenen Code, um das Plugin aufzurufen. Der folgende Code dient nur zur Veranschaulichung, wie es funktionieren könnte. In der Produktion würden Sie wahrscheinlich all diese Skripte kombinieren.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script src="js/footable-0.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('table').footable();
});
</script>
Es ist auch wahrscheinlich, dass Sie Ihre eigenen Breakpoints haben. Das ist sehr einfach zu konfigurieren, wenn Sie das Plugin aufrufen.
$('table').footable({
breakpoints: {
mamaBear: 1200,
babyBear: 600
}
});
Verwenden Sie dann diese Werte anstelle Ihrer data-hide Attribute.
Entwickelt für Erweiterbarkeit
Ein weiteres cooles Feature von FooTable ist die Art und Weise, wie es erweitert werden kann. Wir wollten den Kerncode nicht aufblähen, wenn wir im Laufe der Zeit weitere Features hinzufügen. Außerdem hat jedes Projekt seine eigenen Anforderungen, und wir erkennen, dass Sie nicht jedes Feature von FooTable in jedem Projekt benötigen werden. Also hat sich Steve eine tolle Plugin-Architektur innerhalb des Plugins ausgedacht, die es FooTable ermöglicht, einfach erweitert zu werden. Um Ihre Tabelle beispielsweise sortierbar zu machen, müssen Sie nur die Datei footable.sortable.js einbinden. Wir haben bisher nur das Sortier-Add-on veröffentlicht, aber wir arbeiten fleißig am Filter-Add-on und hoffen, noch viele weitere zu entwickeln. Wir hoffen auch, dass die Community uns hier unterstützt und wirklich coole Add-ons entwickelt. Sie können diesen Vorlagencode einsehen, um zu sehen, wie es gemacht wird.
Zuletzt, aber nicht zuletzt… Demos!
- Responsive Showcases – hier sind alle bisherigen Demos mit einem einfach zu bedienenden Viewport-Switcher, um die Features mit minimalem Aufwand zu demonstrieren!
- Einfache Tabelle mit Text
- Tabelle mit Bildern und Links
- Sortier-Demo
Zur Info, alle Ihre Sortier-Demos erlauben keine Sortierung in der Spalte Nachname. Ich bin mir nicht sicher, ob das beabsichtigt war oder nicht.
Brad, das ist ein wirklich cooles Plugin, ich mag, was du gemacht hast, einige großartige Designideen. Funktioniert das überhaupt mit Datatables?
Ich habe gerade die Zurb responsiven Tabellen in Datatables implementiert und es funktioniert ziemlich gut, aber ich muss vielleicht einiges davon jetzt überdenken, nachdem ich das hier gesehen habe. Ich musste jedoch den Kerncode modifizieren, damit es kein Plugin ist. Ich werde dies auf GitHub als Fork von DT verfügbar machen. Hier ist ein Beispiel dafür, was ich getan habe.
http://cascadeoutside.com/
Ein konstruktives Feedback hier. Eines der Dinge, die ich am Zurb-Plugin mag, ist, dass es mit langen Zellendaten umgehen kann. Wie geht Ihr Plugin damit um, das war aus Ihrer Demo nicht klar?
Ich denke, eine Sache, die ich ausprobieren werde, basierend auf dem, was Sie getan haben, ist, die Gerätebreite zu erkennen und Spalten basierend darauf auszublenden, mit den zusätzlichen Spaltendaten im Modal (ich bin mir nicht sicher, ob Modals derzeit auf Mobilgeräten funktionieren).
Cheers, Jon
Ich habe FooTables kürzlich für ein persönliches responsives Projekt verwendet, es ist etwas Kleines, aber es funktioniert ziemlich gut.
Schauen Sie sich das an.
Es ist zu 98% fertig, ich muss ein paar Farben polieren, CSS- und JavaScript-Dateien zusammenführen und das finale CSS ohne
--debug-infokompilieren (lesen Sie über Firesass für Firebug).Ich habe es mit dem schnellen Side-Sliding-Menü Meny kombiniert.
Was denkst du?
Ich habe vergessen zu erwähnen, dass diese Übung, die ich gemacht habe, nur für Tablets und Smartphones gedacht ist, also auf Ihren großen Bildschirmen ist die Tabelle genauso breit wie Ihr Browserfenster.
Sie können aber jederzeit Ihren Browser manuell vergrößern oder in Firefox
SHIFT+CTRL+Mdrücken oder das Viewport Resizer Bookmarklet verwenden.Danke, dass du deinen Link hinzugefügt hast, Ricardo. Es ist immer hilfreich, etwas in einem realen Szenario wie Ihrem Zeitplan zu sehen. Ein paar Punkte, die ich ansprechen möchte, sind, dass es auf einem mobilen Gerät nicht sehr gut skaliert, ich vermute, weil zu viele Felder für die Person sichtbar bleiben. Auch wenn Sie nach Mann/Frau usw. filtern, brauchen Sie dieses Feld wahrscheinlich nicht mehr auf der Grafik, oder? Nur ein paar konstruktive Kritikpunkte. Cheers!
Hallo David, kein Problem, jede konstruktive Kritik ist unschätzbar wertvoll.
Ich habe es nur auf meinem iPhone 4S, meinem iPad 2 und meinem DroidX getestet. Auf dem iPhone und iPad wird die Seite gut angezeigt*. Auf meinem DroidX funktioniert die Seite nur in Firefox und Opera, im Standardbrowser funktioniert sie nicht gut.
Darf ich fragen, welche Probleme Sie sehen, die Sie zu der Aussage veranlassen: „…es scheint nicht sehr gut auf ein Mobilgerät zu skalieren“?
**Hinweis:* Auf dem iPad (Hoch- und Querformat) sehen Sie alle Spalten, keine wird ausgeblendet. Ich habe den 1024er Breakpoint im Skript entfernt. Es gibt jedoch einen Fehler: Auf dem iPad werden, da keine Spalten ausgeblendet werden, immer noch das „+“-Zeichen angezeigt und man kann darauf tippen, um die Zeile zu erweitern und die versteckten Informationen anzuzeigen, und das sollte nicht passieren. Das muss ich mir ansehen.
Ich habe jedoch bemerkt, dass man manchmal „härter“ auf die Filter im linken Menü tippen muss, um die gewünschten Inhalte der Tabelle anzuzeigen.
Außerdem: „…wenn Sie nach Mann/Frau usw. filtern, brauchen Sie dieses Feld wahrscheinlich nicht mehr sichtbar“. Funktionieren die Filter bei Ihnen nicht? Ich meine, immer wenn Sie einen Filter antippen/auswählen, zeigt die Tabelle nur die Informationen des ausgewählten Filters an und blendet die restlichen Informationen aus.
Die Filter funktionieren bei mir einwandfrei.
Vielen Dank für Ihren Beitrag.
Hallo Ricardo,
Ein paar Punkte
–Das Dropdown/Dropdown-Umschalter erscheint auch dann, wenn keine zusätzlichen Informationen vorhanden sind.
–Die Tabelle wird bei Größenänderung des Fensters etwas zu spät angepasst – es gibt Zeiten, in denen die Tabelle größer als das Browserfenster ist.
–Ich mag nicht wirklich, wie sich die Filter auf die Tabelle auswirken, während sie „eschewed“ (oder wie auch immer der Begriff ist) ist – vielleicht nur eine Frage der Meinung.
Das ist meine „Kritik“. Ich hoffe, sie ist hilfreich.
Hallo Joao,
Ich schätze es, dass Sie sich die Zeit nehmen, Feedback zu geben.
Bezüglich Ihrer Punkte
Zu Punkt 1: Ja, das habe ich bereits erkannt und in meinem Beitrag über Ihrem erwähnt, es ist etwas Kleines, aber etwas, das ich mir ansehen muss.
Zu Punkt 2: Sie müssen bedenken, dass das, was ich getan habe, nur für Mobilgeräte gedacht ist, nicht für den Desktop (außer zu Testzwecken). Außerdem werden Benutzer ihr Browserfenster nicht verkleinern/vergrößern, wie wir Webdesigner/Entwickler es tun, um den Zeitplan zu nutzen. Was die Benutzererfahrung betrifft, beeinträchtigen die angezeigten Balken die Erfahrung nicht.
Nichtsdestotrotz habe ich versucht, mein Browserfenster so schnell wie möglich zu verkleinern/vergrößern, um zu sehen, ob die Tabelle nicht mit der Fenstergröße „mithalten“ kann, und ich hatte überhaupt keine Scrollbalken.
In diesem Zusammenhang möchten Sie vielleicht Ihre Videotreiber aktualisieren oder die Bildwiederholfrequenz Ihres Displays erhöhen, da die „Zeichnung“ von Elementen auf Ihrem Bildschirm offensichtlich von Ihren Videotreibern durchgeführt wird. Ich hoffe, Sie haben eine nVidia-Karte ;)
Zu Punkt 3: Die Filter fügen im Grunde Klassen hinzu/entfernen, die wiederum Inhalte ein-/ausblenden. Da das Filtern geschieht, während das Menü geöffnet ist und die Aufmerksamkeit des Benutzers speziell auf dem Filtermenü und nicht auf der Tabelle liegt, gab es keinen Grund, etwas „Besonderes“ beim Ein-/Ausblenden der Inhalte zu tun.
Außerdem wollte ich etwas Funktionaleres als „Besonderes“, da dies eher eine Übung zu responsiven Tabellen mit dem FooTable-Skript in Verbindung mit der Verwendung des Meny-Menüs war.
Haben Sie es auf Ihrem Handy überprüft?
Vielen Dank nochmals für Ihre wertvollen Beiträge.
Mit freundlichen Grüßen.
Das wäre schön, wenn es mit SQL-Software integriert wäre.
Ja, ich bin mir bei der SQL-Integration nicht sicher. Schließlich ist dies als clientseitiges Werkzeug konzipiert, da es JavaScript ist. Wie Sie die Daten ZUM JavaScript bringen, hängt von Ihrer Anwendung ab. Und bei all den verschiedenen Datenbanktypen da draußen wäre das sicherlich „außerhalb des Umfangs“. Das ist nur meine Meinung, natürlich.
Hey, zufälligerweise ist das sehr ähnlich wie stacktable.js, das ich vor ein paar Tagen auf Github gestellt habe. Große Geister denken gleich, haha.
http://johnpolacek.github.com/stacktable.js/
Ich mag die data-* Features, die Sie in Ihrem haben. Gute Arbeit!
Macht es auch feste Tabellenköpfe?
$wird_ich_es_benutzen = $breakpoints->support(’em’) ? true : false;
Dies ist ein großartiger universeller Ansatz. Ich habe festgestellt, dass ich für meine responsiven Tabellen, da die Kopfzeilen die meisten Daten enthielten, die Tabellen von den Kopfzeilen bei kleinen Bildschirmauflösungen entfernen und die Kopfzeilen im Absatzformat anzeigen konnte.
Hier ist, was ich getan habe: http://express-genomics.com/services/
Hallo
Ich entwickelte eine ASP.NET MVC 3-Anwendung für eine Organisation zur Kinderbetreuung, in der ich Jquery Table Sort oft verwendet habe. Ich bin dabei, diese Anwendung responsiv zu machen. Nach dem Lesen Ihres Beitrags frage ich mich, ob sie mit ASP.NET MVC passt?
Danke,
Ich glaube nicht, dass dieses jQuery-Plugin programmierabhängig ist, es sollte… muss mit jeder Sprache funktionieren, mit der jemand es verwenden möchte.
Es ist der Programmierer selbst, der die Arbeit leisten muss, dieses Plugin mit jeder Entwicklung zu integrieren, die er gerade macht.
Schließlich gibt JEDE Programmiersprache am Ende HTML aus, und dort kommt dieses Plugin ins Spiel.
Hallo, ich habe dieses Footable gefunden und ich liebe dieses Kunstwerk! Tolle Arbeit! Nur eine Sache, ich bin mir nicht sicher, ob es mein Fehler ist, aber als ich die Dateien von Github heruntergeladen habe, scheint die Funktion, die versteckte Spalten anzeigt, nach dem Klicken auf die Kopfzeile zum Sortieren der Tabelle nicht zu funktionieren. Ich habe versucht, die genauen .js-Dateien aus dem Quellcode der Sortier-Demo zu kopieren, und es funktionierte plötzlich. Ich weiß nicht, wo das Problem liegt, da ich nur ein Neuling in der Programmierung bin, hoffe nur, dass ich eine Antwort finde, warum, oder andere rette, die das gleiche Problem wie ich hatten. Danke und nochmals tolle Arbeit! :D
Carlos,
Sie sollten den Fehler im Issues-Bereich auf Github melden.
Ohne die Sortierdateien importiert funktioniert alles einwandfrei. Wenn ich die Sortierdateien importiere, funktioniert die Sortierfunktion, aber die Detailansicht / Erweiterung funktioniert nicht mehr. Ich habe versucht, die heruntergeladenen Dateien mit den Dateien aus der Demo zu überschreiben, und es ist immer noch dasselbe.
Aus dem Konsolenprotokoll sieht es nicht so aus, als ob das CSS für die Detailansicht erstellt wird, wenn die Sortierdateien importiert werden.
Hat jemand Vorschläge?
Ich habe gerade darüber nachgedacht, wie ich das Problem mit Datentabellen auf der neuesten responsiven Website, an der ich arbeite, angehen würde. Dieser Artikel kam genau zur richtigen Zeit. Danke für das tolle Plugin.
Perfektes Timing. Ich habe in den letzten Tagen an der Erstellung meiner eigenen Datentabelle gearbeitet. Mir gefällt die Idee hier, mehr Informationen anzuzeigen, wenn man auf die Zeile klickt. Irgendwie bin ich nie auf diese Art und Weise gekommen, es zu tun.
Ein großartiges Plugin :)
Als wir „footable“ mit einer bestehenden Tabelle ausprobiert haben, die kein thead und tbody hatte, hat es überhaupt nicht funktioniert. Also, wer ein solches Problem hat, überprüfen Sie bitte Ihr Tabellen-Markup.
Ich frage mich nur: Warum sollte man eine Tabelle ohne
<thead>haben?Ich meine, technisch kann man eine
<table>ohne<thead>erstellen, aber inhaltlich macht das nicht viel Sinn. Die Spalten und Zeilen haben normalerweise (wenn nicht IMMER) eine gewisse Beziehung, die es ermöglicht, den Inhalt zu interpretieren.Auf der MDN-Seite für
<table>von Mozilla finden Sie im Abschnitt Ergebnis, dass der Inhalt der ersten Tabelle (John Doe und Jane Doe) nicht viel Sinn ergibt. Aber die Tabelle darunter mit<thead>nimmt den Inhalt eine völlig andere Form an, da die Informationen jetzt eine „Beziehung“ haben, die Sie in der ersten Tabelle nicht wahrnehmen.Vielleicht würde das Hinzufügen eines
<thead>zu Ihrer Tabelle nicht nur helfen, dieses Plugin zu verwenden, sondern auch Ihrem Inhalt mehr Bedeutung verleihen und die Benutzererfahrung bei der Interaktion mit Ihrem Produkt verbessern.(Hinweis: Während ich diesen Beitrag schreibe, funktionierte der Markdown-Dienst nicht, daher ist es schwer zu sagen, wie der Beitrag herauskommen wird…)
Sehr cool! Eine kleine Bug in FF17 mit der Sortiertabelle bemerkt. Das asc/desc-Symbol erscheint etwa auf halber Höhe der Tabelle und rechtsbündig ausgerichtet. Es scheint aus dem TH auszubrechen.
Sieht großartig aus! Ein erster Test ergibt, dass dies nicht sofort gut mit datatables.net integriert wird, insbesondere mit den Datatables-Sortierfunktionen. Ich habe festgestellt, dass [td]s in andere Spalten springen können.
Ich rufe fooTable bei jeder Neudarstellung (d.h. Sortieren/Paginieren) der Datentabelle auf, um sie wieder in Form zu bringen.
Ich vermute, das liegt an zusätzlichen [div]s und [span]s, die in die Datentabelle eingefügt wurden, um Ellipsenüberlauf und die Sortierung von Spalten mit Icons zu erzwingen.
Ich werde versuchen, einige dieser internen Tabellen-Markups zu entfernen, die meiner Meinung nach schuld sind, aber jede Einsicht wird geschätzt.
Das wäre schön, wenn es mit SQL-Software integriert wäre.
Hey, die Tabellen sehen wirklich gut aus! Ich frage mich nur, wie etwas wie das Folgende implementiert würde; einige Buttons oder Toggles über der Tabelle, um den Inhalt zu filtern. Z.B. Button 1: zeige nur Zeilen mit dem Namen John, Button 2: zeige nur Zeilen mit dem Beruf Builder. Ich denke an etwa 5-6 Buttons/Toggles.
Ich habe mir den Plugin-Code noch nicht angesehen, aber der allgemeine Prozess wäre, die Buttons zu erstellen und eine Funktion einzurichten, um das data-sort-Attribut der Tabelle (auf das, wofür der Button steht) zu ändern, wenn die Buttons geklickt werden.
Hey, wie füge ich Footables in WordPress 3.5 ein?
Hey, vielen Dank für diesen Beitrag. Sehr nützliches Plugin :D
Hey,
Wie schaltet man das Kreuz-Symbol ein, damit die Leute sehen können, dass sie es erweitern können?
Das ist einfach… erstaunlich. Absolut erstaunlich.
Es funktioniert sogar in IE 7.
Vielen Dank.
Hey,
Zuerst einmal vielen Dank für das großartige Plugin. Fantastisch…
Ich integriere dieses Plugin in ein Projekt und benötige feste Header oben. Wie kann das gemacht werden? Jede Hilfe wäre willkommen.
Danke
Irshad
Hallo,
Gibt es eine Option, die ein Select-Element als Header behandelt?
Ich habe eine Tabelle mit einem Select-Element, aber wenn ich irgendeine reaktionsfähige Tabellenlösung implementiere, erhalte ich die gesamte Optionsliste als Kopfzeile und habe bisher keine Lösung dafür gefunden.
Danke!
Ich habe dieses Plugin installiert (was großartig zu sein scheint!), aber es passiert überhaupt nichts?
Danke!
Perfekte Nutzung für das, was ich brauche. Ich habe Datatables verwendet, aber sie haben es viel zu sehr aufgebläht, um das zu tun, was dieses hier tut. Bin auf ein paar Dinge gestoßen, wie z. B. die Größenanpassung. Zum Beispiel bei Tablets auf 1024 eingestellt, hat die Größenanpassung um viele Pixel daneben gelegen. Ich musste es auf 'tablet: 997' setzen, um die Größenanpassung bei 1024 vorzunehmen.
Dieses hier kann ich nicht herausfinden. Ich habe Schaltflächen in einer Zelle. Sie funktionieren einwandfrei, bis sie in divs verschoben werden. Jetzt... wie gesagt, ich habe keine Ahnung, warum, da die Klickfunktion durch '$('.view').click();' ausgelöst wird. Ich bin mir nur nicht sicher, wie es die Klasse nicht lesen oder finden oder beim Klicken ausgelöst werden kann. Ich klicke und es wird nicht erkannt, dass geklickt wurde.
Danke!
Ah, wenn ich mir den generierten Code ansehe, sehe ich jetzt, warum. Aber trotzdem. Auch wenn es mehrere Schaltflächen gibt, zwei davon die gleichen, sollte es trotzdem ausgelöst werden, wenn darauf geklickt wird. Oder man würde denken, oder? Da es nach Klasse und nicht nach ID geht?