Datenstabellen sind nicht gut für responsives Design geeignet. Nur so als Info.
Er hat einen guten Punkt. Datentabellen können ziemlich breit sein, und das aus gutem Grund. Eine einzelne Datenzeile muss zusammengehalten werden, um in einer Tabelle Sinn zu ergeben. Tabellen können sich in der Breite dehnen, aber sie können nur so schmal werden, bevor sie den Zelleninhalt unangenehm umbrechen oder einfach nicht mehr schmaler werden.
Responsive Design bedeutet, Designs anzupassen, um Bildschirme unterschiedlicher Größe zu berücksichtigen. Was also passiert, wenn ein Bildschirm schmaler ist als die minimale Breite einer Datentabelle? Sie können herauszoomen und die gesamte Tabelle sehen, aber die Textgröße ist zu klein, um sie lesen zu können. Oder Sie können auf Lesbarkeit zoomen, aber das Durchsuchen der Tabelle erfordert sowohl vertikales als auch (trauriger Smiley) horizontales Scrollen.

Also, das werden wir jetzt tun…
Wir werden „Responsive Design“-Prinzipien (CSS @media queries) verwenden, um zu erkennen, ob der Bildschirm kleiner ist als die maximale Quetschbarkeit unserer Tabelle. Wenn ja, werden wir die Tabelle neu formatieren.
Wir sind brav und nutzen hier Plain Ol’ Semantic Markup für unsere Tabelle. **Bare bones** Beispiel
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Job Title</th>
</tr>
</thead>
<tbody>
<tr>
<td>James</td>
<td>Matman</td>
<td>Chief Sandwich Eater</td>
</tr>
<tr>
<td>The</td>
<td>Tick</td>
<td>Crimefighter Sorta</td>
</tr>
</tbody>
</table>
Unser normales CSS ist nichts Besonderes
/*
Generic Styling, for Desktops/Laptops
*/
table {
width: 100%;
border-collapse: collapse;
}
/* Zebra striping */
tr:nth-of-type(odd) {
background: #eee;
}
th {
background: #333;
color: white;
font-weight: bold;
}
td, th {
padding: 6px;
border: 1px solid #ccc;
text-align: left;
}
Der kleine, responsive Kram kommt jetzt. Wir haben bereits herausgefunden, dass unsere minimale Tabellenbreite etwa 760 Pixel beträgt, also werden wir unsere Media Query so einrichten, dass sie greift, wenn sie schmaler als das ist. Außerdem zielen wir auf iPads ab, da sie genau in dieser Zone liegen.
Die größte Änderung ist, dass wir *die Tabelle dazu bringen, sich nicht wie eine Tabelle zu verhalten*, indem wir jedes tabellenbezogene Element als block-level definieren. Indem wir dann die ursprünglich hinzugefügten Zebra-Streifen beibehalten, ist es so, als würde jede Tabellenzeile zu einer eigenen Tabelle werden, aber nur so breit wie der Bildschirm. Kein horizontales Scrollen mehr! Dann verwenden wir für jede „Zelle“ CSS-generierten Inhalt (:before), um das Label anzuwenden, damit wir wissen, was jedes Datenstück bedeutet.
/*
Max width before this PARTICULAR table gets nasty
This query will take effect for any screen smaller than 760px
and also iPads specifically.
*/
@media
only screen and (max-width: 760px),
(min-device-width: 768px) and (max-device-width: 1024px) {
/* Force table to not be like tables anymore */
table, thead, tbody, th, td, tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
tr { border: 1px solid #ccc; }
td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50%;
}
td:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
}
/*
Label the data
*/
td:nth-of-type(1):before { content: "First Name"; }
td:nth-of-type(2):before { content: "Last Name"; }
td:nth-of-type(3):before { content: "Job Title"; }
td:nth-of-type(4):before { content: "Favorite Color"; }
td:nth-of-type(5):before { content: "Wars of Trek?"; }
td:nth-of-type(6):before { content: "Secret Alias"; }
td:nth-of-type(7):before { content: "Date of Birth"; }
td:nth-of-type(8):before { content: "Dream Vacation City"; }
td:nth-of-type(9):before { content: "GPA"; }
td:nth-of-type(10):before { content: "Arbitrary Data"; }
}
Und so erhalten Desktops das normale Tabellenerlebnis, und Mobilgeräte (oder andere kleine Bildschirme) erhalten eine neu formatierte und leichter zu erkundende Tabelle.

Hey, was ist mit IE?
IE 9 und darunter mögen es nicht, wenn Sie Tabellenelemente als display: block; setzen. Es macht komische Dinge und funktioniert nicht richtig. Aber IE 9 unterstützt Media Queries. Meine Lösung bisher ist, die Media-Query-Stile in bedingte Kommentare zu packen.
<!--[if !IE]><!-->
<style>
/* table-related media query stuff only */
</style>
/* Or an external stylesheet or whatever */
<!--<![endif]-->
Wenn das Problem *nur* darin bestünde, dass ältere Versionen von IE keine Media Queries unterstützen, könnten wir das Projekt css3-mediaqueries-js (Polyfill-Unterstützung für alle Media Queries) oder Respond (auch Polyfill, viel kleiner, aber unterstützt nur min/max-width) verwenden. Beide funktionieren sehr gut. Aber das ist in diesem Fall nicht unser Problem.
Das alles funktioniert gut in IE 10 und IE 10 ignoriert auch bedingte Kommentare, sodass die Stile funktionieren, auch wenn sie in !IE-Konditionalen eingeschlossen sind.
Sehen Sie es
Es gibt zwei Seiten für die Demo, eine mit der responsiven Tabellenlösung und einen Link zur nicht-responsiven Version, damit Sie hin und her springen können, um das Problem zu sehen.
In der Demo verwende ich ein paar zusätzliche Media Queries für Mobilgeräte, um den Body auf bestimmte Breiten zu zwingen, damit er nicht zickig wird. Quellcode anzeigen, um ihn zu schnappen.
Das ist nicht perfekt…
Dies ist nur eine mögliche Lösung für das Problem von Datentabellen auf kleinen Bildschirmen. Es ist nicht perfekt. Es mag einige Barrierefreiheitsprobleme geben (oder vielleicht auch nicht, ich bin mir wirklich nicht sicher). Wahrscheinlich gibt es einige ausgefeilte JavaScript-Lösungen, die Dinge anders angehen und auch großartig funktionieren könnten. Wenn andere Lösungen dafür auftauchen, werde ich diese Seite aktualisieren.
UPDATE: Andere Ideen
Scott Jehl hat zwei alternative Ideen entwickelt, die beide sehr cool und sehr unterschiedlich zu dieser sind. Dies unterstreicht einen wichtigen Punkt: Es hängt vom spezifischen Kontext Ihrer Datentabelle ab, welche Lösung Sie wählen.
Eine davon erstellt ein Tortendiagramm aus den Daten in der Tabelle. Auf schmaleren Bildschirmen wird das Tortendiagramm angezeigt und die Tabelle ausgeblendet, andernfalls wird nur die informationsreichere Tabelle angezeigt. Arguably, die mobile Version ist nützlicher!

Die nächste Idee (Scott schreibt Todd Parker die Credits zu) ist, die Tabelle auf schmalen Bildschirmen in eine Miniaturansicht einer Tabelle zu verwandeln, anstatt die gesamte Tabelle anzuzeigen. Dies zeigt dem Benutzer, dass hier eine Datentabelle zu sehen ist, beeinträchtigt aber den Inhalt kaum. Klicken Sie auf die Tabelle, Sie werden zu einem speziellen Bildschirm zur Ansicht der Tabelle weitergeleitet, und klicken Sie, um zurückzukehren.

Mobile First Version von Derek Pennycuff.
Version, die mit divs beginnt und die Labels werden durch Pseudo-Elemente und data-attributes von Mobifreaks generiert.
Nur unwesentliche Dinge verstecken Version von Stewart Curry
Generiere mobile Versionen direkt (ohne die Divs) von Hannes Kirsman basierend auf diesem Gist (Live-Demo).
Sehr schick.
Ich finde es ironisch, dass wir jetzt CSS zur Formatierung von Tabellen verwenden, anstatt Tabellen zur Formatierung ganzer Seiten zu verwenden.
Das ist gar nicht ironisch.
Tabellen sind/waren ausschließlich für tabellarische Daten konzipiert, die in sauberen Zeilen und Spalten organisiert sind. Seiten sind in ihrem Design nicht annähernd so starr, daher wenden Tabellen starre Layoutprinzipien auf ein flexibles Designmedium an, und das ist eine SCHLECHTE Idee.
CSS wurde entwickelt, um alle Elemente einer Seite zu stylen, einschließlich Tabellen, daher ist es perfekt für seine beabsichtigte Funktion.
~M
Das passt zu meiner Definition von Ironie.
Wirklich tolles Beispiel. Ich war anfangs etwas besorgt, wie es aussehen würde, aber es sieht großartig aus.
Ich habe jedoch eine Frage. Ich dachte, HTML sei für (markierten) Inhalt und CSS für Stil. Sollte man sich Sorgen machen, dass Sie jetzt Inhalt zu Ihrem CSS hinzugefügt haben, in Form von Labels?
Ist das nicht genauso eine Sünde wie das Hinzufügen von Stil zu Ihrem HTML?
Es könnte eine Grauzone sein…
Wenn Sie das tun würden
Das ist definitiv sündhaft.
Aber in diesem Fall hat das Markup IMMER noch ordnungsgemäße Tabellenüberschriften, sodass es so barrierefrei ist wie jede andere Datentabelle in jeder anderen Umgebung. Wir verstecken nur die Überschriften an einem Ort und zeigen sie an einem anderen, ohne das Markup zu ändern.
Wie gesagt, es könnte eine Grauzone sein, ich weiß es einfach nicht.
Verstanden, danke!
Sie können versuchen, das „data-“ Attribut zu verwenden, auf das Pseudo-Elemente über die Content-Deklaration zugreifen können
content: attr(data-something);
Außerdem können Sie jeder Tabellenzelle ein „headers“-Attribut geben, was super semantisch und barrierefrei ist, und diese anstelle von Daten verwenden. Aber es gibt ein kleines Problem: headers enthält die Werte der entsprechenden Header-IDs. Ich bin mir nicht sicher, ob das Setzen dieser IDs in durch Leerzeichen getrennten Wörtern als gute Praxis angesehen würde (jedes Wort wäre eine unabhängige ID, und man könnte ziemlich schnell Ideen für verschiedene Wörter finden, da die ID eindeutig sein muss).
Was für eine wunderbar elegante Lösung! Danke fürs Teilen.
Schöne Lösung für das Problem nicht lesbarer Tabellen auf kleinen Bildschirmen. Danke fürs Teilen!
Idee von @chriseppstein
Verwenden Sie data-Attribute für die Zellen, damit der Inhalt in HTML und nicht in CSS verbleibt.
Dann ist CSS eher so
Sauber. Irgendwie microformatty.
Schön, danke für das Nachfassen, Chris!
Ich würde empfehlen, das Attribut „axis“ zu verwenden, da dieses definieren soll, zu welchen Headern die Daten einer Zelle gehören.
Das ist großartig für mehrsprachige Websites!
Hallo, ich wende diese Art von responsiven Stil auf Magento an und möchte, dass er sich überall auf alle Tabellen auswirkt. Deshalb habe ich ein Stück jQuery-Code geschrieben, das das data-heading (das ist mein Attribut) mit den entsprechenden Informationen füllt.
Anforderungen
1. Fügen Sie Ihren Datentabellen die Klasse „data-table“ hinzu.
2. Verwenden Sie eine richtige thead/tbody-Struktur.
3. Wenden Sie die erforderlichen CSS für das data-heading-Attribut wie beschrieben an.
Ich hoffe, das hilft jemandem.
Beste Grüße
Von @mathias — Wir müssen möglicherweise nicht „only screen“ als Teil der Media Query verwenden. Diese Dinge könnten sich auch in anderen Medien gut anwenden lassen, obwohl ich es nicht getestet habe. Ich bin eher bereit, es nur für Bildschirme zu lassen, bis ich sehe, dass dies auch in diesen anderen Medien nützlich ist.
Schöne Lösung.
Wirklich nützlich. Toller Tipp, Chris.
PS: Ich teile es sofort mit meinen Freunden.
Gute Implementierung, aber eine schlechte Lösung.
Sie ist jetzt als Tabelle völlig unleserlich. Ich glaube, ich würde lieber scrollen / mein Handy in den Landschaftsmodus drehen...
Ich stimme zu, aber dann könnte es von der Tabelle und der Vertrautheit des Benutzers damit abhängen.
Kombinieren Sie dies mit der „Next“-„Other“-Idee (das „Tap to View“-Modell), und ich denke, es ist ein Gewinner. Sie haben zugängliche tabellarische Informationen, die aus dem Layout herausgehalten werden, bis sie angefordert werden.
Nachdem ich zuvor mit Datentabellen in responsiven Designs gearbeitet habe, weiß ich, dass sie eine Qual sein können.
Meine Sorge bei diesem Beispiel ist, dass wir nur die Datentabelle sehen. Die Neugestaltung der Daten, um sie auf einen schmalen Bildschirm zu bringen, ist großartig im Kontext dieses Beispiels, aber im Kontext einer ganzen Website kann sie viel Platz beanspruchen und einen Benutzer leicht verloren zurücklassen.
Glücklicherweise gibt es etwas, das wir dagegen tun können. Zugegebenermaßen ist es nicht die beste Lösung, aber wenn wir die horizontale Ausrichtung unserer Datentabelle beibehalten wollen, können wir Overflows verwenden.
Für Multi-Touch-Geräte wie das iPhone und iPad können Sie Ihre Tabelle in ein Div verschachteln und dem Div overflow: auto zuweisen. Wenn sich Ihre flexible Website um die Tabelle zusammenzieht, erzeugt die Overflow-Eigenschaft eine Scrollleiste. Ihr iPhone oder iPad zeigt die Scrollleiste nicht an, aber Sie können jetzt 2 Finger verwenden, um die Tabelle nach links oder rechts zu wischen, um alle Daten anzuzeigen.
Für Geräte, die nicht das Glück haben, Multi-Touch zu genießen, kann JavaScript verwendet werden, um innerhalb dieses Divs mit einer einzigen Berührung nach links und rechts zu wischen. Nun, dies ist nicht javascript-tricks.com, also behalte ich bei, dass dies eine unvollständige Lösung ist, aber ein anderer Blickwinkel auf das Problem.
Ich liebe das!! Danke
Zwei iPhones mit einem Kommentar: „Beides suckt gleichermaßen“. Unbezahlbar :D. Ich werde den Artikel tatsächlich lesen, wenn ich aufgehört habe zu lachen :D
Das, mein Freund, ist ziemlich großartig!
Obwohl ich den vorherigen Kommentatoren zustimme, die richtig darauf hingewiesen haben, dass diese Lösung stark von der Art der Informationen innerhalb der Tabelle abhängen könnte.
Sehr schönes Beispiel hier. Beim Hinzufügen von Inhalten mit CSS.
Auf die gleiche Weise, wie Sie die Elemente versteckt haben, hätten Sie nicht zusätzliche Markups hinzufügen und sie im Standardlayout ausblenden können?
Würde das Ihr Markup nicht semantisch machen, da Sie wiederholte Daten hätten?
Reich
Eine der besten Lösungen, die es gibt. Ich bin sicher, sie wird in Zukunft noch weiter verbessert.
Wow!!! Gut wie immer. Prost Kumpel.
Wow, das ist elegant und kreativ… Ich liebe, wie es sich entwickelt.
Wow! Das ist wirklich großartig!!
Aber wäre es besser gewesen, wenn wir die Hintergrundfarben der Überschriften auch im verkleinerten Fenster beibehalten könnten!!
Ich weiß nicht, ob ich zustimme, dass dies die eleganteste Lösung ist. Das ist SEHR viel vertikales Scrollen, nur um wenige Daten zu sehen, ohne die visuelle Zuordnung einer Zeile. Ich fände das sehr mühsam zu lesen.
Ich habe über genau dieses Dilemma für ein Projekt nachgedacht, an dem ich gerade arbeite. Die Lösung, auf die ich mich geeinigt habe, war, ein enthaltendes Div mit overflow scroll zu versehen. So gibt es eine gut sichtbare horizontale Scrollleiste, die den Rest der Seite nicht beeinträchtigt, aber die Daten ihre Formatierung behalten lässt.
10x fürs Teilen!
Jetzt will ich eine Lösung finden :) Es ist ein gutes Thema, eines, das noch nicht wirklich behandelt wurde. Ich frage mich, welche anderen Lösungen die Leute finden werden.
Dies ist eines der schwierigeren Dinge, mit denen ich mich in letzter Zeit auseinandersetzen musste, und ich bin mir nicht sicher, ob es bereits eine großartige Antwort gibt.
Was ich getan habe, war, die Tabelle in ein Div zu packen und es auf overflow:auto zu setzen, sodass man beim Scrollen auf kleinen Bildschirmen eine Seitenrolle hat, dann ein paar Touch-Erkennungen, damit man die Tabelle wischen/scrollen kann.
Auch nicht die beste Methode, aber ja, eine schwierige Frage zu beantworten.
Ein weiterer Ansatz, der kein JavaScript und keine Beschriftung (manuell oder geskriptet) erfordert, ist die Verwendung von Regenbogenstreifen auf den Spalten in Verbindung mit unterschiedlich gefärbten Zebra-Streifen auf den Zeilen.
Ich habe ein reines CSS-Beispiel geschrieben und ein einfaches funktionierendes Demo verfügbar, wenn Sie interessiert sind.
Als jemand, der nicht als Webentwickler lebt und einfach nur richtiges CSS für meine persönlichen Webseiten verwendet: Unabhängig davon, ob dies eine gute Lösung ist oder nicht, ist es ehrlich gesagt *großartig*, dass man es nur mit CSS machen kann.
Ich poste nur einen Kommentar, um zu Ihrer Kommentar-Grafik beizutragen. ;-)
Wow, danke dafür! Ich fand es wirklich kreativ und hilfreich.
Löffel! Das ist eine clevere Art, dem immer wachsenden Trend Rechnung zu tragen, Dinge in mehreren Ansichten betrachten zu müssen. Sobald meine Region eine gute Zellsignalstärke hat, wird dies wichtiger werden. Ja, es gibt immer noch Gebiete in den USA, die kein 4G haben. Kommen Sie und besuchen Sie mich in Nord-Michigan.
Prost und machen Sie weiter so.
Kevin „Mistfit“ Mist
Sie sagten „Quetschbarkeit“, das war ein großartiger Moment.
Danke für die Einsicht, Chris, immer nützlich. Ihre Lösung ist perfekt machbar, eine Tortendiagramm-Lösung ist genauso gut. Was war die andere, ach, Klick zum Anzeigen der Tabellenseite. Man könnte auch die Titel auflisten und durch Drücken die entsprechende Zeile mit Daten anzeigen lassen.
Alles gut. Prost.
Ich arbeite an einer ähnlichen Lösung, die vielversprechend aussieht und Chris Eppsteins data-label-Lösung sowie eine potenzielle IE-Korrektur mit float:left; verwendet.
Es ist möglich, dass das gleiche Layout auch für IE8 und IE9 funktioniert, indem Sie die folgenden Anpassungen innerhalb der Media Query vornehmen:
table, thead, tbody, th, td, tr{display: block;
width:100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
float:left;
clear:left;
}
und dann für jede
tdinnerhalb der Media Query eine Höhe festlegen, z. B.40px, und außerdemrespond.jsverwenden, damit Media Queries mit IE8 funktionieren :)Die Ironie liegt in der Verwendung von handcodiertem CSS zur Spezifizierung semantischer Inhalte in den :before Pseudo-Elementen, auf eine Weise, die zufällig nicht skriptbar ist und daher nicht prozedural repliziert werden kann.
Aber die Technik ist in Bezug auf die Stile ziemlich weitsichtig und zeigt in hohem Maße, wie formfaktorzentrierte Daten-Markups sein müssen. Letztendlich sollte dies das Ergebnis individuell auswählbarer Ansichten für die betreffenden Daten sein: die Konvertierung von Tabellen in individuell beschriftete Schlüssel:Wert-Paare. Eine solche Struktur könnte wünschenswert sein.
Zum Thema fragte mich ein Freund kürzlich, wie ich als Informationsdesigner und Front-Ender komplexe automatisierte Testberichtstabellen so gestalten würde, dass sie auf seinem Smartphone gut aussehen, wenn er nicht bei der Arbeit ist. Die Antwort, die ich gab, nannte einen granulareren Ansatz: Entweder man bietet manuelle Einschränkungen für den Umfang der angezeigten Daten über Abfragen oder Skripte, oder man bietet eine geskriptete Schnittstelle, die eine sehr niedrig aufgelöste Anzeige präsentiert, die schnell erweitert werden kann, um die Details spezifischer Einträge zu bieten.
Manchmal bedeutet die Natur der Daten und ihre sinnvoll wünschenswerten Formen, dass eine Anzeige auf kleinem Bildschirm sie nicht angemessen präsentieren kann, ohne den Daten einen Nachteil zu tun: Manchmal ist zusätzliche Benutzeranstrengung notwendig, damit die Daten ihre scheinbare Relevanz behalten.
Schön! Wo ich arbeite, kämpfen wir mit der programmatischen Erstellung von Tabellen für den Druck, die oft zu breit sind. So etwas könnte für uns relevant sein. Tolle Inspiration. Ich stimme definitiv zu, dass das Format von den Daten abhängt und davon, was man über den Leser weiß. In vielen Kontexten wäre es beispielsweise absolut verständlich, die Labels „Vorname“, „Nachname“ zu überspringen und einfach den lesbaren Namen oben in die Zelle zu schreiben. Es in eine Art Kartenansicht verwandeln.
Was passiert, wenn Sie zwei Tabellen auf derselben Seite haben? Wie wenden Sie es nur auf eine Tabelle an?
Schon vergessen, wurde oben beantwortet (d. h. data-Attribute).
Fantastischer Beitrag.
Sprechen wir Ihre Zielgruppe an? Ich denke, Mädchen schreiben auch CSS.
Das ist fair, ich werde es ändern.
Ich denke, das ist nur für Fälle, in denen die Tabelle die gesamte Seitenbreite einnimmt.
Was ist, wenn die Tabelle nur an der Seite der Seite ist? (z. B. ein Div auf der linken Seite, das **40**% Breite einnimmt, und unsere Tabelle auf der rechten Seite mit **60**%).
Ich habe das im obigen Fall verwendet. Es schlägt bei niedrigen Auflösungen fehl.
Wie löst man das ...?
Es war ein großartiges Beispiel, aber was ist, wenn wir zwei Tabellen auf einer einzigen Seite haben?
td:nth-of-type(1):before { content: „Label für die erste Zeile der ersten Tabelle“; }
Ich denke, es gibt keine nth-of-class-artige Funktion. Bitte antworten Sie also, wie das für mehr als eine Tabelle auf einer einzigen Seite erreicht werden kann.
Wie wäre es, weniger Spalten anzuzeigen und die anzuzeigenden Spalten durch horizontales Ziehen (links/rechts) umzuschalten?
(@sufail: verwendet einen ID-Selektor für Ihre verschiedenen Tabellen)
Hallo Chris Coyier… ich bin Ihr Fan. L) Das ist wirklich gut… ich bin sehr glücklich :) Danke.
Ich habe dies für einen Warenkorb implementiert, das „position: absolute“ scheint die Änderung des „quantity input“-Feldes zu verhindern. z.B. shoppen wählt eine größere Menge und „aktualisiert“ dann den Warenkorb.
Wenn ich position: absolute entferne, werden die Produkte und Labels zentriert, und ich möchte sie linksbündig ausrichten. Links ausgerichtet funktioniert nicht.
Jede Idee, was ich sonst noch tun könnte, wäre sehr willkommen.
Das ist nur für das Handy, die Desktop-Größe ist in Ordnung.
Cheers, das hat mir meinen Montag gerettet!
Ich habe mein Problem gelöst.
Also für alle anderen, die das verpassen, hier ist, worum es ging
table td {
/* Verhalten wie eine „Zeile“ /
border: none;
/ border-bottom: 6px solid green; */
position: relative;
padding-left: 50%; (Standard 50%, ich habe auf 30% geändert)
}
Ich habe also das td auf 30% und das td:before auf 24% geändert… als ich eine Hintergrundfarbe auf das td:before setzte, zeigte es das Problem deutlich.
Ich habe einfach etwas so Einfaches übersehen.
Ich hoffe, das hilft jemand anderem. Ich möchte verstehen, wie Dinge funktionieren, anstatt blind zu kopieren/einzufügen. Daher bin ich froh, dass ich es gefunden habe.
Das funktioniert bei mir nicht, ich habe keine Ahnung warum. Ich habe etwa 14 Stunden damit verbracht, es zum Laufen zu bringen, alle Stile gelöscht und es wieder und wieder versucht. Ich bin mir nicht sicher, was die seltsamen Probleme mit meinen Tabellen verursacht.
Das ist wunderbar! Es funktioniert aber nicht in IE.
Ich denke, die Lösung ist nur halbwegs vorhanden. Funktioniert für *diese* Tabelle in Ordnung, ist aber für zukünftige Entwicklungen nicht so rücksichtsvoll.
Ich würde gerne eine Kombination aus Dereks Tabelle sehen, aber mit gesperrten Kopfzeilen, wie wir es in Excel tun, damit die Beschriftungen auf der Seite bleiben und nur jeweils ein td-Ergebnis angezeigt wird. [Oder vielleicht in Kombination mit Overflow für die Ergebnisse]
Hier ist ein Beispiel für eine Art schwimmendes TH;
http://jsfiddle.net/FyJwZ/7/
Ist es möglich, die Tabellenüberschriften auf eine eigene Zeile zu setzen, damit sich der Inhalt auf kleinen Bildschirmgrößen nicht überlappt?
Ich habe keine Erfahrung mit CSS, aber könnte http://cssdesk.com/GRBqd/ als Ausgangspunkt für dieses Projekt dienen, inspiriert von http://jsfiddle.net/DHjVE/
Gibt es eine Möglichkeit, die Pseudo-Labels nur für Zellen anzuzeigen, die Inhalt haben? Ich mache eine einfache Anwesenheitsliste und meine drei Spalten sind Gastgeber | Ehepartner | Gäste. Um das Scrollen zu minimieren, wäre es großartig, wenn die Pseudo-Labels nicht angezeigt würden, es sei denn, es gibt Daten.
Ich bin ziemlich neu in CSS, aber meines Wissens gibt es nur sehr wenig bedingte Logik, die man darin verwenden kann.
Ich habe 2 verschiedene Diagramme auf einer Seite, die miteinander verbunden sind. Wie bekomme ich das before td für jedes Diagramm korrekt? Ich habe Klassen mit verschiedenen Elementen ausprobiert, aber es lässt immer das erste td leer.
Schöne praktische Lösung mit minimalem Aufwand.
Ich habe jedoch Probleme damit auf einer jqueryui-Seite.
Funktioniert allein gut: Ihr Text zum Verlinken hier…
aber reagiert hier nicht gut: Ihr Text zum Verlinken hier…
Gibt es jemanden, der Gedanken dazu hat?
Mir gefällt, wie diese Tabelle neu formatiert wird. Ich habe mehrere Probleme damit. Das erste ist die Verwendung von Tabellen-Tags (ich bevorzuge Divs). Das zweite ist die Verwendung dieser Lösung für dynamische Seiten, sodass alle Tabellen auf diese Weise formatiert werden. Das dritte ist, dass das Einfügen von Zeichenketten in CSS für mehrsprachige Websites einfach furchtbar ist.
Hat jemand versucht, versteckte Elemente für die Spaltentitel zu verwenden? Hat jemand versucht, Divs für die Struktur zu verwenden?
Ein Workaround für IE9-Unterstützung – einfach die Tabellenzeilen und -zellen floatten
tr, td {
display: block;
float: left;
}
Was ist der Grund für das
padding-right: 10px;imtd:before? Soweit ich das beurteilen kann, tut das nichts. Übersehe ich etwas?table, thead, tbody, th, td, tr{
display: block;
width:100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
float:left;
clear:left;
}
Dieser Code hier erledigt die Sache für mein IE9-Problem (Danke an Cristoffer), aber IE9 stürzt jedes Mal ab, wenn ich versuche, die Bildschirmgröße meines Browsers auf die ursprüngliche Größe zurückzusetzen. Hat jemand eine Idee, warum?
nettes Skript – aber hat jemand eine Idee, warum es unter Windows Phone nicht funktioniert?
Das hat super funktioniert, Chris. Die beste Lösung überhaupt!
Das hat wie am Schnürchen funktioniert!! Vielen herzlichen Dank!
Für den Moment war meine Website mit WordPress erstellt, während ich sie per Hand codiere.
Gibt es eine Möglichkeit, den Textumbruch in den td-Elementen beizubehalten, sobald es zu kleineren Bildschirmen wechselt? Ich bekomme langen Text, der über die Tabelle hinausgeht, und nach dem Wechsel eine Scrollleiste. Ich habe verschiedene Wortumbruch-Zusätze ohne Erfolg ausprobiert.
In Ihrer Demo, Traumurlaubsstadt und Stadtname, überlappen sich die Texte, wenn der Browser horizontal minimiert ist. Wie kann man das verhindern?