含まれているテーブルの幅全体を埋めるための同じサイズのテーブルセル


96

HTML / CSS(相対的なサイズ設定)を使用して、セルの行に、それが含まれるテーブルの幅全体を拡大させる方法はありますか?

セルは同じ幅でなければならず、外部テーブルのサイズもで動的<table width="100%">です。

現在、固定サイズを指定しない場合; セルはコンテンツに合わせて自動サイズ調整されます。

回答:


144

セルに特定の幅を設定する必要はなくtable-layout: fixed、セルを均等に広げるのに十分です。

ul {
    width: 100%;
    display: table;
    table-layout: fixed;
    border-collapse: collapse;
}
li {
    display: table-cell;
    text-align: center;
    border: 1px solid hotpink;
    vertical-align: middle;
    word-wrap: break-word;
}
<ul>
  <li>foo<br>foo</li>
  <li>barbarbarbarbar</li>
  <li>baz</li>
</ul>

以下のためにという注意table-layoutテーブルスタイルの要素を動作させるには、幅セット(私の例では100%)を持っている必要があります。


11
このソリューションはより優れており、動的に生成された列でも機能するはずです
Imran Omar Bukhsh 2013年

文字列がtdの最大幅を超えると問題が発生します
Sterling Archer

5
word-wrap:break-word先ほど発見したように、追加するとこの問題は修正されます
Sterling Archer

113

パーセント幅と固定テーブルレイアウトを使用するだけです

<table>
<tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
</tr>
</table>

table { table-layout: fixed; }
td { width: 33%; }

固定されたテーブルレイアウトは重要です。それ以外の場合、コンテンツが収まらない場合、ブラウザは幅が適切と見なされるように調整します。つまり、幅は固定されたテーブルレイアウトなしのルールではなく提案です。

明らかに、CSSを状況に合わせて調整します。これは通常、特定のクラスまたは特定のIDを持つテーブルにのみスタイルを適用することを意味します。


D:とあなたがしているTDセレクタは、他のTDの関与選択しない作る
ゴードン・グスタフソン

3
td動的な列数がある場合があるため、幅を設定する必要はありません。
ДаниилПронин

4

使用table-layout: fixedのためのプロパティとしてtable及びwidth: calc(100%/3);ためにtd仮定3があるtdさん)。これら2つのプロパティを設定すると、テーブルセルのサイズが等しくなります。

デモを参照してください。


2
両方は必要ありません。どちらのソリューションでも十分です。
Chris Kraszewski、2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.