2012-12-29 14 views
17

Voglio il tavolo per avere larghezza 100%, ma solo una colonna da essa dovrebbe avere una larghezza libera, come:Come ridurre la larghezza della cella di una tabella per adattarla solo al suo contenuto?

| A | B | C                 | 

così la larghezza delle colonne A e B deve corrispondere alla larghezza del loro contenuto, ma la larghezza di C dovrebbe andare avanti fino alla fine del tavolo.

Ok, potrei specificare la larghezza di A e B in pixel, ma il problema è che la larghezza del contenuto di queste colonne non è fissa, quindi se impostassi una larghezza fissa non corrisponderebbe perfettamente al contenuto :(

PS: Non sto utilizzando voci di tabella effettive, ma un elenco DL racchiuso in un div. Il div ha display: tabella, dl ha display: table-row e dt/dd display: table-cell ...

+0

I dati sono di natura tabellare? Se è così, non c'è ragione per non usare le tabelle. – Jawad

+0

ma lo stesso accade se utilizzo il markup della tabella .. – thelolcat

+1

Correlati: http://stackoverflow.com/questions/4582631/are-shrink-to-fit-table-cells-possible –

risposta

24

Se ho capito, si dispone di dati tabulari, ma si desidera presentare nel browser utilizzando div elementi (tabelle AFAIK e div con display: table si comporta in gran parte la stessa)

.

(ecco un jsfiddle di lavoro: http://jsfiddle.net/roimergarcia/CWKRA/)

Il markup:

<div class='theTable'> 
    <div class='theRow'> 
     <div class='theCell' >first</div> 
     <div class='theCell' >test</div> 
     <div class='theCell bigCell'>this is long</div> 
    </div> 
    <div class='theRow'> 
     <div class='theCell'>2nd</div> 
     <div class='theCell'>more test</div> 
     <div class='theCell'>it is still long</div> 
    </div> 
</div>​ 

E il CSS:

.theTable{ 
    display:table; 
    width:95%; /* or whatever width for your table*/ 
} 
.theRow{display:table-row} 
.theCell{ 
    display:table-cell; 
    padding: 0px 2px; /* just some padding, if needed*/ 
    white-space: pre; /* this will avoid line breaks*/ 
} 
.bigCell{ 
    width:100%; /* this will shrink other cells */ 
}​ 

La parte triste è non ho potuto fare questo uno anno fa, quando ne avevo davvero bisogno -_-!

+7

Si prega di notare che aggiungere 'layout-tabella : riparato al div principale spezzerà questo css. – Roimer

+2

'white-space: nowrap' potrebbe essere migliore. Se hai una lista in linea in una cella, l'opzione 'pre' fa impilare - almeno in un vero tag table. – cyberwombat

+0

Che cosa fai se hai bisogno di estendere una cella su più righe? Come si applica la soluzione a questo? –

Problemi correlati