【CSS】tableの幅を固定する
HTMLでテーブルを作成しているとき、表示するデータによってテーブルの幅が変わってしまうことがあります。
ヘッダ列のtdに対してCSSでwidthを指定しても、列幅より長い文字列に引っ張られてしまうんですね。
これは、テーブルの幅を固定するCSSを記述することで解決することができます。
https://msdn.microsoft.com/ja-jp/library/ee341478(v=expression.40).aspx
<div id="TableWrapper" style="width: 300px;"> <div>列幅を固定していないテーブル</div> <table style="width: 100%; table-layout: auto;" > <thead> <tr> <th style="width:20%;">A</th> <th style="width:20%;">B</th> <th style="width:20%;">C</th> <th style="width:20%;">D</th> <th style="">E</th> </tr> </thead> <tbody> <tr> <td>AAA</td> <td>BBBBBB</td> <td>CCCCCCCCC</td> <td>DDDDDDDDDDDD</td> <td>EEEEEEEEEEEEEEE</td> </tr> </tbody> </table> <div>列幅を固定したテーブル</div> <table style="width: 100%; table-layout: fixed;" > <thead> <tr> <th style="width:20%;">A</th> <th style="width:20%;">B</th> <th style="width:20%;">C</th> <th style="width:20%;">D</th> <th style="">E</th> </tr> </thead> <tbody> <tr> <td>AAA</td> <td>BBBBBB</td> <td>CCCCCCCCC</td> <td>DDDDDDDDDDDD</td> <td>EEEEEEEEEEEEEEE</td> </tr> </tbody> </table> </div>
tableタグのstyleに、「table-layout:fixed」を指定していることが分かります。
実際にはこんな感じです。
列幅を固定していないテーブル
A | B | C | D | E |
---|---|---|---|---|
AAA | BBBBBB | CCCCCCCCC | DDDDDDDDDDDD | EEEEEEEEEEEEEEE |
列幅を固定したテーブル
A | B | C | D | E |
---|---|---|---|---|
AAA | BBBBBB | CCCCCCCCC | DDDDDDDDDDDD | EEEEEEEEEEEEEEE |
どちらも同じ幅を指定しています。
列幅を固定していないテーブルはデータによって幅が変わってしまうのに対し、列幅を固定しているテーブルは指定された幅になっていることが分かります。
このままではセルに含まれる文字列が飛び出してしまうため、tdタグに対して「word-wrap: break-word;」を指定して改行ができるようにすると良いかもしれません。
No comments.