web-dev-qa-db-ja.com

表のセルの幅だけを内容に合わせて縮小するにはどうすればよいですか?

テーブルの幅を100%にしたいのですが、次のように、テーブルの1つの列だけが自由な幅を持つ必要があります。

| A | B | C                                                                  |

したがって、A列とB列の幅はコンテンツの幅と一致する必要がありますが、Cの幅はテーブルが終了するまで続きます。

OK、AとBの幅をピクセル単位で指定できますが、問題はこれらの列のコンテンツの幅が固定されていないため、固定幅を設定するとコンテンツと完全に一致しないことです:(

PS:実際のテーブルアイテムは使用していませんが、DLリストはdivでラップされています。divにはdisplay:table、dlにはdisplay:table-row、dt/ddの表示があります。テーブルセル...

18
thelolcat

私が理解している場合は、表形式のデータがありますが、div要素を使用してブラウザに表示したいです(display:tableのAFAIKテーブルとdivはほとんど同じように動作します)。

(ここに動作するjsfiddleがあります: http://jsfiddle.net/roimergarcia/CWKRA/

マークアップ:

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

そして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 */
}​

悲しいのは、本当に必要なときに1年前にこれを行うことができなかったということです-_-!

25
Roimer