2013-07-24 24 views
14

voglio una tabella a larghezza fissa con 1 piccola e 2 grandi colonne in questo modo:pasticci colspan con tavolo larghezza fissa

|..|....|....| 
|..|....|....| 
|..|....|....| 

utilizzando

td.small { width: 20% } 
td.large { width: 40% } 

poi voglio aggiungere un col grande extra con colspan = 2

|.......|....| 
|..|....|....| 
|..|....|....| 

utilizzo

td.small { width: 20% } 
td.large { width: 40% } 
td.extralarge { width: 60% } /* 20+40=60 */ 

Ma continuo a finire con:

|.......|....| 
|...|...|....| 
|...|...|....| 

Un esempio più grafica is found on jsbin

js-bin screenshot

** ed si **

dispiace, ho perso un dettaglio: devo usare (o almeno così credo ..?) table-layout: fixed dal momento che sto avendo alcune proprietà speciali traboccanti delle cellule:

td { 
    white-space: nowrap; 
    text-overflow: ellipsis; 
    overflow: hidden; 
} 

Updated jsbin found here .

+0

è sufficiente rimuovere il layout della tabella –

+0

@Naveen Sì Ha funzionato, ma ho semplificato il mio esempio troppo. Vedi domanda aggiornata. – Cotten

+0

Prova a dare 'display: table-row' a ciascun elemento. –

risposta

17

Si potrebbe anche usare colgroup e col per impostare la larghezza:

<table> 
    <colgroup> 
     <col class="short" /> 
     <col span="2" class="long" /> 
    </colgroup> 
    <tr> 
     <td>Short</td> 
     <td>Long long long long</td> 
     <td>Long long long long</td> 
    </tr> 
    <tr> 
     <td>Short</td> 
     <td>Long long long long</td> 
     <td>Long long long long</td> 
    </tr> 
    <tr> 
     <td>Short</td> 
     <td>Long long long long</td> 
     <td>Long long long long</td> 
    </tr> 
</table> 

Con questo CSS:

table { width: 100%; } 
.short { 
    background: lightblue; 
    width: 20% 
} 
.long { 
    background: lightgreen; 
    width: 40%; 
} 
.multiCells { background: #F3A633; } 

In questo modo non è necessario assegnare ad ogni classe una classe, è più semplice quando si desidera modificare il nome della classe.

JSFiddle demo

+0

non si sa di 'colgroup', ma semplice' col's ha risolto il problema – Cotten

+0

quando si ha 'thead',' tbody', 'tfoot' quindi' colgroup' deve trovarsi di fronte a 'table' – Stalinko

7

modificare la tabella layout: fisso per l'auto

table { 
    table-layout: auto; 
} 

Trova il lavoro demo qui: http://jsbin.com/atohug/2/edit

+0

Grazie! Ha funzionato, ma ho semplificato il mio esempio troppo. Vedi domanda aggiornata. – Cotten

Problemi correlati