【HTML&CSS】tableのセル幅を均等にする方法

CSS
記事内に商品プロモーションを含む場合があります。

HTMLで作成したtableのセルの幅を均等にしたい。

HTMLで作成したtableの各セルの横幅は、デフォルトだと文字幅に依存するため、均等ではありません。

そのため、CSSでの調整が必要です。

この記事では、tableセルの横幅を均等に配置するためのCSSや、使い方の注意点について解説します。

スポンサーリンク

【HTML&CSS】tableのセル幅を均等にする方法

冒頭でお伝えした通り、tableのセル幅はデフォルトだと「文字幅」に依存するため、均等ではありません。

下はサンプルですが、各セル幅はバラバラですね。

ちなみに、上記tableのコードはこちらになります。

HTML

<table>
   <thead>
      <tr>
         <th></th>
         <th>当社</th>
         <th>株式会社○○○○商事</th>
         <th>(有)△△</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <th>価格</th>
         <td>18000円</td>
         <td>20000円</td>
         <td>30000円</td>
      </tr>
      <tr>
         <th>追加料金</th>
         <td>なし</td>
         <td>あり</td>
         <td>あり</td>
      </tr>
      <tr>
         <th>店舗数</th>
         <td>全国200店舗</td>
         <td>関東のみ</td>
         <td>関西のみ</td>
      </tr>
   </tbody>
</table>

CSS

table {
  border-collapse: collapse;
}

th,
td {
  font-size: 20px;
  border: 1px solid #333;
  padding: 20px;
  text-align: center;
}

thead th {
  background-color: #ffcc99;
}

tableセルの横幅を均等にするには、CSSのtable-layoutプロパティを使い、値をfixedにします。

table-layout: fixed;
:tableのセル幅を均等にする

table-layoutの使い方と注意点

table-layoutはtable要素」に使います。

各セル(thやtd)ではないことに注意しましょう。

また、tableの横幅が必須なので、こちらも合わせてご注意ください。

table {
  width: 800px; /*横幅は必須*/
  table-layout: fixed;
}

なお、tableの横幅は「%」でも大丈夫です。

table {
  width: 80%;
  table-layout: fixed;
}

すると、table各セルの横幅が均等になります。

なお、均等配置を解除したいときは、値をautoとします。

table {
  table-layout: auto;
}

table-layoutの便利な使い方

中には「1列だけ横幅を固定して、残りのセル幅を均等にしたい」というケースがあると思います。

table-layoutはその点で非常に使い勝手がよくて、1列だけ固定値を指定すると、残りのセルを自動で均等に配置してくれます。

たとえば、先ほどのtableのtable-layoutをfixed(均等配置)にしたまま、1列目だけ「150px」に固定してみましょう。

table {
  width: 1000px;
  table-layout: fixed;
}

/*1列目だけ固定値150pxに変更*/
thead th:nth-child(1),
tbody th {
  width: 150px;
}

すると、1列目だけ150pxで固定され、残りが均等に分配されます。

このように、table-layoutは非常に使い勝手のいいCSSプロパティなので、使い方を押さえておきましょう。