2012-12-29 3 views
17

Ich möchte die Tabelle 100% Breite haben, aber nur eine Spalte aus sollte eine freie Breite haben, wie:Wie kann die Schrumpfbreite einer Tabellenzelle so angepasst werden, dass sie nur ihrem Inhalt entspricht?

| A | B | C                 | 

so die Breite von A- und B-Säulen sollte die Breite ihres Inhalts übereinstimmen, aber Die Breite von C sollte weitergehen, bis der Tisch endet.

Ok Ich könnte die Breite von A und B in Pixeln angeben, aber das Problem ist, dass die Breite des Inhalts dieser Spalten nicht festgelegt ist. Wenn ich also eine feste Breite festlege, würde sie nicht perfekt mit dem Inhalt übereinstimmen :(

PS: Ich verwende keine tatsächlichen Tabellenelemente, sondern eine DL-Liste in einem div. Das div hat display: Tabelle, dl hat display: Tabellenzeile und dt/dd display: Tabellenzelle ...

+0

Sind die Daten tabellarisch? Wenn ja, gibt es keinen Grund, keine Tabellen zu verwenden. – Jawad

+0

aber das gleiche passiert, wenn ich Tabelle Markup verwende .. – thelolcat

+1

Related: http://StackOverflow.com/Questions/4582631/are-Shrink-to-Fit-Table-Cells-Möglich –

Antwort

24

Wenn ich Sie verstanden, haben Sie tabellarische Daten, aber Sie wollen es im Browser div Elementen präsentieren (AFAIK Tabellen und divs mit display: table verhält sich meist das gleiche)

.

(hier ist ein Arbeits jsfiddle: http://jsfiddle.net/roimergarcia/CWKRA/)

Das 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>​ 

Und die 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 */ 
}​ 

Der traurige Teil ist, konnte ich dieses Jahr nicht mehr tun vor, als ich es wirklich brauchte -_-!

+7

Bitte beachten Sie, dass das Hinzufügen von 'Tabelle-Layout : fixed zum Hauptdiv wird dieses css brechen. – Roimer

+2

'white-space: nowrap' könnte besser sein. Wenn Sie eine ul-Liste in einer Zelle inline haben, bewirkt die 'pre'-Option, dass sie sich stapelt - zumindest in einem echten Tabellen-Tag. – cyberwombat

+0

Was tun Sie, wenn Sie eine Zelle über mehrere Zeilen erstrecken müssen? Wie wenden Sie Ihre Lösung darauf an? –

Verwandte Themen