DIVs gegen TABLEs bitte eine Widerlegung

Es gibt viele Leute da draußen, die fragen "Warum sollten wir nicht Tabellen verwenden, um unser HTML zu strukturieren" und während viele Antworten reinkommen, sehe ich selten, dass jemand in die Welt der Semantik umgewandelt wird. Ich habe jedoch noch keine überzeugenden Widerlegungen gesehen, um die Gründe dafür zu rechtfertigen, warum wir Tabellen verwenden sollten (oder könnten).

Möchte jemand eine Begründung dafür liefern, wann Tabellen gültige strukturelle Markups sind?


7. November 2008

Wenn man bedenkt, dass diese Frage nicht so verschwand, wie ich dachte, würde ich meine Frage besser klären und ihre Existenz erklären.

Durch Frustration, nachdem ich das Argument "Tabellen sind leichter" gelesen hatte, wollte ich nach der Frage "DIVs vs. TABLES" die Frage ein wenig mehr aufdecken und die Tischliebhaber nicht so leicht vom Haken lassen.

Jeder für sich selbst könnte sagen, aber ich bekomme für immer eine Anwendung auf unsere Seiten, die von einigen "Tabellen sind einfacher" Entwickler erstellt wurde, die einen Haufen von beschissenem HTML in meine Seiten ablegt, und um ehrlich zu sein, ich Ich sehe einfach nicht genug von den Tischliebhabern, die den Argumenten zuhören.

Wer benutzt Mambo damals? Irgendjemand musste einen Versuch unternehmen, ein Design auf den Microsoft Sharepoint zu setzen? Sich durch all den verschachtelten Tisch Mist kämpfen zu müssen, war die Hölle, und wenn man bedenkt, dass es von einigen verdammt guten Codern geschrieben wurde, ärgert es mich. Vernünftiges semantisches Markup gibt es schon lange genug, dass Entwickler keinen Grund haben sollten, sich für "Tabellen sind einfacher" einzusetzen. Tische sind nicht einfacher - sie sind faul!

Meine Frage verdient die negative Rep für die negative Art, in der es präsentiert wurde, aber ich warte immer noch darauf, dass die Leute akzeptieren, dass der einzige Grund, warum sie Tabellen verwenden, ist, weil sie HTML nicht kennen. Denn wenn sie das tun würden, würden sie verstehen, wie jjrv sagt, dass Tabellen für Tabellendaten sind.

0
Bitte stellen Sie Fragen, die beantwortet werden können, nicht nur diskutiert (auf der Seite Fragen stellen)
hinzugefügt der Autor Peter Hilton, Quelle
Ich habe gesehen, wie viel die Fragen der unteren Ebene kreuzten: Ihre Frage inspirierte großartige Reaktionen (von denen einige auf +13 anwuchsen), wurde aber bei -6 in Dosen umgewandelt. Bitte upvote diese schlechte Frage!
hinzugefügt der Autor Dan Rosenstark, Quelle
Ich stimme @AviewAnew zu - diese Frage ist seltsam, wenn Sie gestern genau dasselbe Thema beantwortet haben.
hinzugefügt der Autor delfuego, Quelle

9 Antworten

Tabellen sind für Entwickler, die sich nicht darum kümmern müssen, mit CSS nach Stunden zu geifern, um zwei angrenzende columnese divs auf 100% Höhe und Breite unabhängig vom Inhalt zu erweitern und dann den hack absolute Frustration greifen sie auf die 5-Sekunden-Korrektur zurück:

<table width="100%">
<tr><td valign="top">Left nav</td><td valign="top">Main content</td></tr>
</table>

Die harte Wahrheit ist, dass die meisten Benutzer (mit Ausnahme derjenigen, die Bildschirmleser verwenden) sich wirklich nicht dafür interessieren, wie die Seite markiert wird, solange sie schnell geladen wird.

Entwickler haben Budget- und Zeitbeschränkungen und "gutes" CSS und Markup braucht Zeit.

Die Tatsache, dass es eine Vielzahl von Ressourcen im Web gibt, die sehr mühsam erklären, wie Sie zwei divs aufstellen können, um diese einfache Tabelle zu ersetzen, sagt mir ganz klar, dass dieses Design von Natur aus so fehlerhaft ist wie Tabellen. Wie viele Tutorials werden benötigt, um zu erklären, wie eine Tabelle mit zwei Spalten zu einer Seite hinzufügen ?

HTML5 sollte uns mit den neuen Header-, Footer-, Section-, Nav- und Sided-Tags eine gewisse Vernunft bringen. Beispiel aus Nettuts +:

<div id="content">
    <div id="mainContent">
        
<!-- Blog post -->
 
        
<!-- Comments -->
 
        <form>
            <!-- Comment form -->
        </form>
    </div>
    
 
</div>

und dann das für das CSS:

#content {
    display: table;
}

    #mainContent {
        display: table-cell;
        width: 620px;
        padding-right: 22px;
    }

    aside {
        display: table-cell;
        width: 300px;
    }

Diejenigen unter Ihnen, die ein scharfes Auge haben, werden das Gefühl der Ironie lieben, wenn Sie bemerken, dass das CSS die Eigenschaften hat: display: table; und display: table-cell; .

Tische sind zurück Baby! Schleich dich durch die HTML5-Hintertür ;-)

0
hinzugefügt
display: table und display: table-cell haben nichts mit HTML5 zu tun und sind schon eine ganze Weile (wenn auch nicht gut implementiert).
hinzugefügt der Autor Matt Sach, Quelle

Tabellen sind gültig, wenn Sie eine Tabelle mit Daten haben. Ich habe interaktive Grid-Widgets gesehen, bei denen sie alles tun, um einige divs zu verwenden, um das gefürchtete Table-Tag zu vermeiden. Wenn es Tabellendaten sind, machen Sie es zu einer Tabelle.

Eine kontroversere Ansicht von mir ist, dass Sie, wenn Sie Probleme mit vertikalen Layoutproblemen in CSS haben, einfach eine Tabelle verwenden und diese oft sofort beheben können. Nicht so schön, wie es vielleicht sein sollte, Inhalt mit Präsentation zu vermischen, aber es macht den Job fertig und vermeidet CSS-Hacks, um IE zu umgehen.

0
hinzugefügt

Tabellen werden sogar in knorrigen alten HTML v1.0 Browsern unterstützt. Wenn Ihr Zielmarkt Menschen enthält, die eingebettete Browser in Mobiltelefonen aus den 1990er Jahren verwenden, könnte dies ein guter Grund sein, mit Tabellen zu gehen.

Viele vorhandenen automatisch generierten HTML-Tabellen verwendet Tabellen. Wenn Ihr Code mit diesen Tabellen interagieren oder diese einschließen muss, sollten Sie auf Konsistenz achten.

0
hinzugefügt
Der ganze Sinn von semantischem Markup und CSS liegt darin, dass Ihre Seite auch in einem kniffligen alten HTML v1-Browser noch Sinn ergibt. Tabellen werden Ihnen nur Inkonsistenzen und Albträume geben. Schöne Überschriften, Absätze und solche geben Ihnen eine nette strukturierte pae, die vollkommen sinnvoll ist.
hinzugefügt der Autor roryf, Quelle
Tabellen wurden HTML erst nach HTML 3.2 hinzugefügt.
hinzugefügt der Autor Jim, Quelle

Ich würde sagen, jjrv ist richtig, dass Tabellen sind hervorragend für tabellarische Daten, gehen aus dem Weg zu etwas "Arbeit" wie eine Tabelle statt nur mit einer Tabelle ist grenzwertig verzögert.

Wenn Sie sich für Standards interessieren und in allen Browsern auf eine solide Implementierung hinarbeiten, sollten die meisten Ihrer Markups in Tabellen ohne flüssige Layouts sein ... und Ihre Tabellendaten befinden sich in .. Sie haben es als Tabellen erraten!

Wenn Sie wirklich alte Browser bedienen müssen, also vor dem gefürchteten IE6, dann werden Sie viele Probleme in CSS haben, und angesichts der aktuellen Nutzungsstatistiken ist es ziemlich sicher anzunehmen, dass jeder einen "modernen" Browser haben wird, der CSS-Layouts unterstützt.

all dies gesagt und ihre Zeiten sind, wenn Sie Ihren Kopf gegen die Wand auf einem Layout schlagen und Sie wollen es in einem Tisch sagen und es funktioniert. Ich würde hoffen, dass dies eine veraltete Praxis ist, aber in einem Clinch gibt dies vorhersehbare Ergebnisse.

0
hinzugefügt

Die Verwendung moderner semantischer Markups ist wesentlich einfacher, wenn Sie Funktionen hinzufügen oder Fehler korrigieren oder das Aussehen einer datengesteuerten Website ändern. Das Hinzufügen von AJAX-Features oder jede Art von interaktivem Scripting funktioniert viel besser mit DIVs und CSS als mit TABLEs.

Der Wechsel zu einem Content-Manager wie Drupal, Joomla, WordPress oder ähnlichem wird viel einfacher, wenn Sie bereits mit semantischem Markup ausgestattet sind.

Die neueren Browser-Editionen unterstützen auch moderne Markups effizienter und Ihre Website wird schneller angezeigt. Das Neuanordnen all dieser Tabellen kann zu langsamen Anzeigezeiten führen.

Auf der anderen Seite sind Tische hier um zu bleiben. Einige Leute werden sie weiterhin verwenden und Browser werden sie weiterhin anzeigen. Es gibt nichts an sich falsch mit nicht-semantischen Markup, wenn das was Sie wollen. Eine vollständig statische Site, die niemals geändert wird, kann auch mit Tabellen wie mit modernem Markup ausgeführt werden.

Wie für gültiges strukturelles Markup gibt es das: Tabellen sind eine gute Möglichkeit, tabellarische Daten wie Datenbank- oder Tabellenkalkulationstabellen anzuzeigen. Sie sind nicht wirklich gültige Markup für etwas anderes.

0
hinzugefügt

Verwenden Sie Tabellen für HTML mit dem kleinsten gemeinsamen Nenner oder für Tabellendaten, bei denen es sinnvoll ist, sich über Spalten oder Zeilen zu erstrecken. Ansonsten sind CSS-Layouts viel weniger ausführlich und viel einfacher zu pflegen, sobald Sie den Dreh raus haben.

0
hinzugefügt

DIV-basierte Layouts leiden unter Einschränkungen. Ohne Tabellen ist es im Wesentlichen unmöglich , um ein zweispaltiges Layout zu implementieren, das basierend auf der Höhe des Inhalts richtig wächst.

0
hinzugefügt

Eine interessante Anmerkung bezieht sich auf hochkomplexe JavaScript-Anwendungen. Wenn Sie Google Mail oder Google Kalender mit Firebug auswählen, werden Sie sehen, dass Tabellen auch für das Layout häufig verwendet werden. Zugegeben, diese werden normalerweise dynamisch erzeugt, aber dies zeigt, dass in seltenen Fällen einige visuell sehr komplexe interaktive Benutzeroberflächen extrem schwierig sind, nur mit DIVs zu erstellen.

0
hinzugefügt

RE: Warum Tabellen?

Weil manche Menschen (immer noch, nach all den Jahren) Angst vor Veränderung haben. Sie haben gehört, dass die Verwendung von semantischem HTML eine gute Sache ist (und das Konzept normalerweise nicht vollständig versteht). Also versuchen sie, ein Layout mit CSS zu erstellen, das sie noch nie gemacht haben. Sie stoßen auf ein paar (gut dokumentierte und normalerweise leicht zu lösende) Probleme, werfen ihre Hände hoch und laufen zu den Tischen zurück.

Sie entscheiden dann, dass CSS "zu zeitaufwendig" ist ("Ich bin nicht bereit, die Zeit zu verbringen, um es zu lernen") oder "nicht praktisch" ("Ich verstehe es nicht. Es ist zu hart") und dass Tabellen sind der einzig wahre Weg. Durch Sturheit und Ignoranz glauben sie ihrem eigenen Bullsh! T und überzeugen ihre Kunden und Kollegen.

Und ihre Welt bleibt glücklich und unverändert, verblasst weiter in die Vergangenheit und tiefer in die Obsoleszenz *

Und das ist "warum Tabellen". Das Ende.

(* außer dass sie sich gut zum Codieren von HTML-Emails eignen)

0
hinzugefügt