【CSS】tableの幅を固定する

【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.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です