2012-06-29 11 views
168

次のマークアップを考えれば、CSSを使用して1つのセル(列内のすべてのセル)をストレッチ(デフォルトの動作)ではなくコンテンツ内の幅に合わせるにはどうすればよいですか?コンテンツにセル幅を合わせる

<style type="text/css"> 
td.block 
{ 
border: 1px solid black; 
} 
</style> 
<table style="width: 100%;"> 
<tr> 
    <td class="block">this should stretch</td> 
    <td class="block">this should stretch</td> 
    <td class="block">this should be the content width</td> 
</tr> 
</table> 

編集:私は、私はハード幅をコーディングすることができ実現が、私はむしろ、その列に行くコンテンツが動的であるとして、あることないと思います。

下の画像を見ると、最初の画像はマークアップの生成画像です。第二のイメージは私が望むものです。

enter image description here

+0

私はあなたの質問を理解していません。最後の列を特定の幅に制限しますか? – MetalFrog

+5

@diEcho私はそれがかなり明らかだと思った。私は写真を2枚追加します。 – Mansfield

+0

[CSS table column autowidth](https://stackoverflow.com/questions/4757844/css-table-column-autowidth) – Vadzim

答えて

310

私はあなたの質問を理解してかどうかわからないんだけど、私はそれで刺してみましょう。 JSfiddle of the example

HTML:

<table style="width: 100%;"> 
<tr> 
    <td class="block">this should stretch</td> 
    <td class="block">this should stretch</td> 
    <td class="block">this should be the content width</td> 
</tr> 
</table> 

CSS:

td{ 
    border:1px solid #000; 
} 

tr td:last-child{ 
    width:1%; 
    white-space:nowrap; 
} 
+1

の重複している可能性があります。なぜ、

'
' – diEcho

+9

@diEcho私はそのコードを書いていませんでした。それにもかかわらず、width属性を要素に使うのは悪い習慣です。この簡単な例では、インラインCSSは問題ありませんが、これが本番レベルコードの場合はファイルに抽象化する必要があります。 – MetalFrog

+30

このIMOを行うよりきれいな方法は、 "nostretch"(またはそのようなもの)というスタイルを定義してから、CSSでnostretchをwidth:1%とnowrapを持つように定義することです。最後のTDは 'class = "nostretch block"を持つでしょう。そうすれば、あなたはあなたが望むどんな細胞でも "取り除く"ことができます。 –

26

max-width:100%; 
white-space:nowrap; 

を設定すると、あなたの問題を解決します。

+2

Firefoxで試してみましたが、うまくいきませんでした。 – Adam

1

私が知ることができるすべてのスペックに従って要素のCSS幅を1%または100%に設定することは、親に関係しています。ライティングの時点では、Blink Rendering Engine(Chrome)とGecko(Firefox)は、1%または100%(列縮小または空き領域を埋める列)をうまく処理するようですが、すべてのCSS仕様私はそれを適切に表現することができます。

一つのオプションCSS4フレックスdivタグでテーブルを置き換えることです:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

すなわちIE11は+記事の下部にある表を参照してください新しいブラウザで動作します。私にとって

1

、これは、テーブルとその列のための最高の自動調整と自動サイズ変更である(使用CSS!重要...あなたがないわけではないことができている場合のみ)

.myclass table { 
    table-layout: auto !important; 
} 

.myclass th, .myclass td, .myclass thead th, .myclass tbody td, .myclass tfoot td, .myclass tfoot th { 
    width: auto !important; 
} 

テーブルのCSS幅を指定しないでくださいまたはテーブルの列の場合。 テーブルの内容が大きい場合は、画面サイズを超えます。

関連する問題