表などを作成する際に使用する「TABLE」タグ。
そんなテーブルの列幅を均等にする方法を解説します。
テーブルのサンプル
作成するのは下記の簡単なテーブル、中にはいっている文字数によって幅が変わっています。
国名 | 人口 | 説明 |
---|---|---|
日本 | 1億人 | おもてなし |
アメリカ | 3億人 | アメリカンドリーム |
<table>
<tr>
<th>国名</th>
<th>人口</th>
<th>説明</th>
</tr>
<tr>
<td>日本</td>
<td>1億人</td>
<td>おもてなし</td>
</tr>
<tr>
<td>アメリカ</td>
<td>3億人</td>
<td>アメリカンドリーム</td>
</tr>
</table>
table {
border-collapse: collapse;
width:100%;
}
th {
background-color:#e7e7e7;
}
th, td {
border: solid 1px #000;
padding:10px;
}
width で幅を揃える
widthを指定して、幅を指定する方法です。
calc関数を使用して 100% / 3(列数) で幅を指定しております。
th {
width:calc(100% / 3)
}
国名 | 人口 | 説明 |
---|---|---|
日本 | 1億人 | おもてなし |
アメリカ | 3億人 | アメリカンドリーム |
これできれいに3等分になりましたが、もし仮に列が増えた場合におかしなことになるので注意が必要です。
国名 | 人口 | 説明 | 有名人 |
---|---|---|---|
日本 | 1億人 | おもてなし | エクセレント本田 |
アメリカ | 3億人 | アメリカンドリーム | カリフォルニアドリーム |
table-layout プロパティを使用
もう一つの方法が「table-layout: fixed」を使用する方法です。
table-layoutプロパティは、表のレイアウト方法を指定するプロパティです。
このプロパティを指定することで、列幅を決定する方法が変わります。
初期値は「auto」 セルの内容で自動的に変化します。
「fixed」は「width」が指定されている場合は、「width」の値。
指定がなければ列数に応じて均等に割り振られます。
table {
table-layout: fixed
}
国名 | 人口 | 説明 |
---|---|---|
日本 | 1億人 | おもてなし |
アメリカ | 3億人 | アメリカンドリーム |
一列増えたとしても均等に表示されます。
国名 | 人口 | 説明 | 有名人 |
---|---|---|---|
日本 | 1億人 | おもてなし | エレファント吉田 |
アメリカ | 3億人 | アメリカンドリーム | ファンタジスタ田中 |
また、仮に列の先頭だけ幅を狭くしたいという場合、先頭にだけ「width」を設定します。
すると、先頭の列は指定した幅、残りを列数に応じて均等に振り分けてくれます。
No | 国名 | 人口 | 説明 | 有名人 |
---|---|---|---|---|
1 | 日本 | 1億人 | おもてなし | エレファント吉田 |
2 | アメリカ | 3億人 | アメリカンドリーム | ファンタジスタ田中 |
まとめ
以上 テーブルの列幅を均等にする方法でした。
tableタグは使う機会が減ったかもしれませんが、やはり表を作成するのはtableタグが一番作りやすいと思います。
ぜひ、参考にしてくださいませ。