2013-04-26 10 views
5

Questo è qualcosa che mi fa impazzire ogni volta che lo vedo. Perché utilizzare gli elementi div è quasi un'ossessione?Perché la maggior parte delle persone desidera evitare TABELLA in HTML e utilizzare i DIV per tutto?

capisco perché avendo per lo più div s nel markup, ognuno con una id o (meglio ancora) un className può aiutare a sviluppare un markup pulito e mantenere il controllo delle alterazioni della vista.

Ma, ad esempio, continuo a vedere domande su come fare in modo che i div si comportino come un tavolo, e anche quando viene detto che qualcosa non è compatibile con la versione del browser x o y, vogliono comunque fare cose del genere:

<div style="display: table"> 
    <div style="display: table-row"> 
     <div style="display: table-cell">Content</div> 
     <div style="display: table-cell">Content</div> 
    </div> 
    <div style="display: table-row"> 
     <div style="display: table-cell">Content</div> 
     <div style="display: table-cell">Content</div> 
    </div> 
</div> 

Perché? ... davvero: Perché ??

Perché è meglio che utilizzare uno table? Oppure, perché usare le tabelle è qualcosa di abominevole?

tabelle sono parte di HTML elementi. Esistono per una ragione e hanno un buon scopo. Non sono deprecati e non spariranno in qualunque momento presto (o prima di div s per quella materia). E, cosa più importante: si comportano correttamente in tutte le versioni di browser &!

Allora ... perché l'obession con fare div s si comportano come le tabelle? Perché così tante persone scrivono in questo modo HTML/CSS e quindi si sentono orgogliosi di qualcosa di così sporco?

Questo non è esclusivo di table s. Continuo a vedere div s sostituzione di tutti gli elementi html, come h1 .. h6, span s, ecc

Perché ??

+0

direi che è la semantica. Quando le persone sostituiscono i titoli con elementi div, ciò non ha senso. Ma quando avvolgi il tuo layout in tag che sono destinati ai dati tabulari, allora è anche una semantica errata. Con l'attributo 'display' stai semplicemente cambiando l'aspetto, ma un' td' implicherebbe dati tabulari, che il tuo contenuto potrebbe non essere. – slhck

+0

usa sempre la semantica corretta per descrivere i tuoi dati (i tag corretti), e quindi css per ottenere il tuo stile/layout corretto.tutti i tag html hanno un significato semantico, quindi con essi descrivi i tuoi dati ('table' per i dati tabulari,' h1', 'h2', ... per i titoli, ...) (_div hell_ è male come _table hell_) –

+2

Si chiama divitis. C'è un vaccino chiamato markup semantico, ma alcune persone sono religiosamente avverse a questo genere di cose. – BoltClock

risposta

3

No, utilizzando div che si comportano come celle di una tabella, solo per il gusto di evitare tag table non è molto meglio.

E 'del tutto bene usare le tabelle, in cui le tabelle sono appropriati. Se si desidera visualizzare dati tabulari, utilizzare le tabelle. Se usi semplicemente le tabelle per impaginare la tua pagina in un ambiente simile alla griglia, allora no, non usare le tabelle.

Il motivo per cui le persone usano le div con comportamento di tabella è di solito perché non vogliono usare tabelle, dato che avrebbero un significato semantico, ma vogliono comunque attenersi a un layout tabellare.

Alla fine, si dovrebbe mai usare le tabelle per le pagine di layout però. Molte buone ragioni sono date here.

0

Possibilmente div potrebbe essere migliore se si voleva una tabella come questa:

<table> 
<tr> 
<td></td> 
<td></td> 
<td></td> 
</tr> 
<tr> 
<td></td> 
</tr> 
<tr> 
<td></td> 
<td></td> 
</tr> 
</table> 
+0

No, cerca l'attributo colspan. Anche se sarebbe più difficile per le due colonne se si desidera che ciascuna sia metà della larghezza del tavolo. –

+0

Capisco l'attributo colspan, ma può diventare complicato gestire una tabella di grandi dimensioni, in particolare se si dispone di contenuto dinamico e il numero di tds aumenta o diminuisce. – gaynorvader

Problemi correlati