5 Stimmen

Verwendung von Divs zur Anzeige tabellenähnlicher Daten

Ich möchte Daten wie die folgenden anzeigen:

 Title     Subject    Summary    Date

Also mein HTML sieht so aus:

<div class="title"></div>
<div class="subject"></div>
<div class="summary"></div>
<div class="date"></div>

Das Problem ist, dass der gesamte Text nicht in einer einzigen Zeile erscheint. Ich habe versucht, hinzuzufügen display="block" aber das scheint nicht zu funktionieren.

Was mache ich hier falsch?

Das ist wichtig: In diesem Fall möchte ich nicht mit einem table Element, sondern bleiben bei div Tags.

3 Stimmen

Was machen Sie falsch? Anzeige von tabellarische Daten divs verwenden. Tabellen sind für Tabellen, Divs sind für das Layout. Verwenden Sie stattdessen Tabellen!

3 Stimmen

+1 für die Verwendung des Tabellen-Tags. Es ist nicht böse, wenn es verwendet wird, um tatsächliche tabellarische Daten anzuzeigen.

2 Stimmen

@Das Update, diese Seite zeigt keine tabellarischen Daten an. Deshalb verwenden sie auch keine Tabellen. Sie sprechen von einer Tabelle.

37voto

Andy Lester Punkte 86147

Es sieht so aus, als wollten Sie eine Tabelle anzeigen, richtig? Verwenden Sie also den <table>-Tag.

27voto

Chris Marasti-Georg Punkte 33348

Ich würde das folgende Markup verwenden:

<table>
  <tr>
    <th>Title</th>
    <th>Subject</th>
    <th>Summary</th>
    <th>Date</th>
  </tr>
  <!-- Data rows -->
</table>

Eine weitere Sache, die man bei all diesen div- und listenbasierten Layouts beachten muss, selbst bei denen, die feste Breiten vorgeben, ist, dass das Layout zusammenbricht, wenn ein Textteil breiter als die Breite ist (z. B. eine URL). Das Schöne an Tabellen für tabellarische Daten ist, dass sie tatsächlich den Begriff einer Spalte haben, was kein anderes HTML-Konstrukt hat.

Auch wenn auf dieser Website einige Dinge, wie die Startseite, mit Divs implementiert sind, würde ich argumentieren, dass tabellarische Daten (wie Stimmen, Antworten, Titel usw.) in einer Tabelle sein MÜSSEN. Leute, die Divs vorantreiben, tun dies in der Regel aus Gründen der semantischen Auszeichnung. Sie verfolgen das Gegenteil davon.

0 Stimmen

Ich würde <thead> und <tbody> hinzufügen, aber ansonsten... das. Tabellen sind für tabellarische Daten gedacht.

1 Stimmen

+1 für thead und tbody. Das ist ein Bereich in meiner Web-Entwicklung, die Verbesserung verwenden könnte.

22voto

stalepretzel Punkte 14832

Ich möchte nicht herablassend klingen; wenn ich das tue, habe ich Sie missverstanden und es tut mir leid.

Die meisten Menschen lehnen Tische ab, weil sie sie aus dem falschen Grund verwenden. Oft verwenden die Leute riesige Tabellen, um Dinge auf ihrer Website zu positionieren. Diese ist das, wofür Divs verwendet werden sollten. Nicht für Tabellen!

Wenn Sie jedoch Folgendes anzeigen möchten tabellarische Daten wie z. B. eine Liste von Fußballmannschaften, Siegen, Niederlagen und Unentschieden, sollten Sie auf jeden Fall Tabellen verwenden. Es ist fast unbekannt (wenn auch nicht unmöglich), Divs für diese Zwecke zu verwenden.

Denken Sie daran: Wenn es um die Anzeige von Daten geht, können Sie durchaus eine Tabelle verwenden!

10voto

da5id Punkte 8980

Wenn es einen legitimen Grund gibt, keine Tabelle zu verwenden, könnten Sie jedem Div eine Breite zuweisen und es dann schweben lassen, z.B.

div.title {
    width: 150 px;
    float: left;
}

1 Stimmen

Autsch! jeder Text angezeigt, wenn gezoomt, könnte verstümmelt werden. zumindest verwenden em nicht px für Einheiten.

1 Stimmen

...oder geben Sie die Schriftgröße auch in px an, was die Schriftgrößenanpassung in Browsern effektiv deaktiviert (der Zoom funktioniert aber weiterhin).

5voto

gregmac Punkte 23263

Gibt es einen Grund, keine Tabellen zu verwenden? Wenn Sie tabellarische Daten anzeigen, ist es am besten, Tabellen zu verwenden - dafür sind sie ja gedacht.

Um Ihre Frage zu beantworten, ist es wahrscheinlich am besten, jedem Element eine feste Breite zuzuweisen und float:left einzustellen. Sie müssen entweder ein Dummy-Element am Ende haben, das clear:both hat, oder Sie müssen clear:both auf das erste Element in jeder Zeile setzen. Diese Methode ist immer noch nicht narrensicher, wenn der Inhalt einer Zelle das Div breiter macht, wird nicht die gesamte Spalte angepasst, sondern nur diese Zelle. Sie können die Größenänderung vielleicht vermeiden, indem Sie overflow:auto oder overflow:hidden verwenden, aber das funktioniert dann nicht wie bei normalen Tabellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X