2011-09-08 9 views
7

È possibile allineare le 2 righe seguenti come una tabella? La prima riga è un h2 perché è il titolo e il resto sono elenchi. La prima colonna dovrebbe essere abbastanza ampia, ma il resto può essere largo quanto il testo all'interno. Le colonne devono riempire la larghezza dello div.Allinea come un tavolo ma con i CSS?

<div> 
<h2 class="header1"> 
<span class="span1">one</span> 
<span class="span2">two</span> 
<span class="span3">three</span> 
<span class="span4">four</span> 
</h2> 
<ul><li> 
<span class="span5">five</span> 
<span class="span6">six</span> 
<span class="span7">seven</span> 
<span class="span8">eight</span> 
</li></ul> 
</div> 
div {width: 500px;} 
h2 span, li span {float: left; width: auto; white-space: nowrap;} 

Esempio:

Example

+0

Questo può essere fatto con 'display del CSS2: table' e relative norme, che è supportato da tutti i browser tranne IE fino IE8. Ma mi interessa la vera ragione per cui voglio farlo. – ThatMatthew

+0

@ThatMatthew 1.) Molte persone (sfortunatamente) usano ancora IE7 e queste proprietà CSS2 non sono supportate. [w3schools] (http://www3.w3schools.com/cssref/pr_class_display.asp) 2.) Il vecchio modo di fare tabelle non è raccomandato dal W3C perché è difficile estrarre i dati. [W3C] (http://www.w3.org/TR/html5/tabular-data.html) –

+0

Voglio solo assicurarmi che tu sappia che _layout_ tables sono ciò che dovrebbe essere evitato. Se hai una tabella di dati, dovresti usare un tag 'table'. – ThatMatthew

risposta

11

Il codice HTML

<div class="table-like"> 
    <div> 
    <span>one</span> 
    <span>two</span> 
    <span>three</span> 
    <span>four</span> 
    </div> 
    <div> 
    <span>five</span> 
    <span>six</span> 
    <span>seven</span> 
    <span>eight</span> 
    </div> 
</div> 

Il CSS

.table-like { 
    display: table; 
    width: 500px; 
} 

.table-like div { 
    display: table-row; 
} 

.table-like div span { 
    display: table-cell; 
} 

/* add borders */ 
.table-like, 
.table-like div span { 
    border: 1px solid black; 
} 

/* bold on 1st row */ 
.table-like div:nth-child(1) { 
    font-weight: bold; 
} 

jsFiddle Demo

+0

Ok, ma attenzione che IE7 non supporta questo metodo. –

3

Onestamente, se si sta cercando di visualizzare i dati tabulari, utilizzare una tabella. Non c'è niente di sbagliato nelle tabelle, solo quando le utilizzi per posizionare contenuti non tabellari. Se hai bisogno di aiuto per formattare una tabella, modifica la tua domanda.

+1

A volte è necessario un allineamento tabellare ma senza utilizzare tabelle a causa del markup semantico. Quindi cancellerei questa risposta. – Marko

+2

Non sarei così pronto a saltare a quella conclusione. Non è raro che le persone facciano di tutto per evitare l'uso del markup table-less senza alcun motivo se non quello di vantare un sito senza tabella. – Wex

+0

@ Marko È corretto. È solo una piccola sezione di pagina che è in formato tabulare, quindi mi piacerebbe stare lontano dall'usare le tabelle. –

0

Tenta di utilizzare il display: inline-block:

h2{display: inline-block; margin:0 padding:0; min-width: 300px}/*use min-width what you want*/ 
ul, ul li{display: inline-block; margin:0; padding: 0;}