パソコンQ&A

テーブルをheight=100%にしても縦いっぱいにならない

テーブルレイアウトで2カラムにした場合、横並びに2つの大きなセルのテーブルを作って、 その中に小さなテーブルを入れるというレイアウトをすることがあります。
このとき高さの下揃えをしようとしてheight="100%"にしてもできないことってないですか?

[関連項目] スタイルシートのfloatでheight:100%;

[ソース]
左のテーブル
文章は短め
右のテーブル
文章は長め
サンプルの文章って
大変ですよ

heightを指定していないと、heightは自動(内包要素の高さに合わせる)になります。
中のテーブルをheight="100%"にしても、外のテーブルがheight自動なら、中のテーブルも100%ではなく『自動』とみなされます。
そこでheight="100%"にして、テーブルの下を揃えたいなら外のテーブルのheightを指定する必要があります。

下の例では、外枠にheight="120"を指定するとできるようになります。

[ソース]
左のテーブル
文章は短め
右のテーブル
文章は長め
サンプルの文章って
大変ですよ

テーブルをウィンドウいっぱいにしたいときに、height="100%"にしてできない場合も同じです。
<body>直下にテーブルを書いているのですから、height="100%"はbody要素によります。
body要素にheightの指定をしてなくてもできる場合とできない場合があります。
この違いは何でしょう?

DOCTYPE宣言で『互換モード』を指定するとbodyのheightは100%とみなされます。
『標準準拠モード』だとbodyは自動です。
bodyをheight="100%"にしたらできると思うのは間違いで、その親要素によりますので親要素htmlの高さもheight="100%"にしないとできません。
DOCTYPE宣言について

スタイルシートで下記のようにするとできるようになります。

html,body{
  height: 100%;
}

[サンプルソース]

注意
他のwidthやheightを指定したときの、width="100%"とかheight="100%"は『残りの領域の100%』ではないです。
あくまでも親要素を基準とした幅や高さの何パーセントということです。
200ピクセルの親要素に70ピクセルの子要素があって、それとは別の子要素に100%を指定したとします。
このときの100%は200-70=130ピクセルの100%ではなく、200ピクセルの100%つまり200ピクセルになります。
このとき親要素は270ピクセルに拡大されます。

△上に戻る


ソース

子テーブルをheight="100%"

<table border="1">
  <tr>
    <td valign="top">
      <table border="1" height="100%" bgcolor="#cc9999">
        <tr>
          <td>左のテーブル</td>
        </tr><tr>
          <td>文章は短め</td>
        </tr>
      </table>
    </td>
    <td valign="top">
      <table border="1" height="100%" bgcolor="#9999cc">
        <tr>
          <td>右のテーブル</td>
        </tr><tr>
          <td>文章は長め<br />サンプルの文章って<br />大変ですよ</td>
        </tr>
      </table>
    </td>
  </tr>
</table>

△上に戻る

親テーブルをheight="120"

<table border="1" height="120">
  <tr>
    <td valign="top">
      <table border="1" height="100%" bgcolor="#cc9999">
        <tr>
          <td>左のテーブル</td>
        </tr><tr>
          <td>文章は短め</td>
        </tr>
      </table>
    </td>
    <td valign="top">
      <table border="1" height="100%" bgcolor="#9999cc">
        <tr>
          <td>右のテーブル</td>
        </tr><tr>
          <td>文章は長め<br />サンプルの文章って<br />大変ですよ</td>
        </tr>
      </table>
    </td>
  </tr>
</table>

△上に戻る

height="100%"の正しい方法サンプル

<html>
<head>
<meta http-equiv="content-style-type" content="text/css">
<style type="text/css">
<!--
html,body{
  height: 100%;
}
-->
</style>
</head>
<body>
<table border="1" height="100%" bgcolor="#cc9999">
  <tr>
    <td>テーブル</td>
  </tr>
</table>
</body>
</html>

△上に戻る

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net