- 締切済み
TABLEタグの幅指定
テーブルの幅を厳密に指定したいのですが、 例えば以下のような1行2列のテーブルがあるとき、 <TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0> <TR> <TD WIDTH=100>***</TD> <TD WIDTH=100>***</TD> </TR> </TABLE> このような場合にテーブルタグにWIDTH属性を加えるとすると、 100*2+4*4+1*3=219で、WIDTH=219が正確な値なのでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Kizz
- ベストアンサー率47% (30/63)
はじめまして。 ◇border/cellspacing/cellpaddingの考え 100*2+4*4+1*3 →これは、あっています。 cellpaddingはセル内上下左右の空きであり、cellspacing罫線内スペース で、まー罫線幅と思っていいもので、2列なら3本あることになります。 ●ただし、219ピクセル絶対かというとちょっと分かりません^^; また、1ピクセルの見た目の大きさが、IEとNetscape、またプラット (Windows/Mac)によって異なります。 ◇<td>でのwidthの指定 <td>のwidthは指定がない場合は、<td>内パーツの幅から算出されて自動的に その大きさになります。 つまり、<td>内で<img>のwidth="100"のみを置いているのであれば、<td>にて width="100"を指定しても、しなくても同じ表示状態になります。 備考) Netscapeの<table>では基本的に全<td>にてwidthを指定するようにした方が よいです(書き癖とする)。 IEの場合、<table>でwidth指定をし、例えば2列のテーブルを書いた場合、 <td>1つに値を設定した場合は、<table>のwidthからのその<td>widthを引いた 値が、もうひとつの<td>のwidthに自動的に設定(表示)されます。 しかし、Netscapeの場合はそのような融通は利かずNetscapeの解釈の元に各 <td>の幅設定がされてしまいます。 なお、<table>や<td>のwidthを設定した上で、その中のパーツがそのwidthを 超した場合は、ブラウザの解釈により妥当なwidthが設定(表示)されます。 これはサンプルを作ってみて試して見るとおもしろいと思いますよ。 頑張ってくださいね。
- denca
- ベストアンサー率32% (17/52)
ディスプレーの幅、IEであればエクスプローラーバーの表示、非表示によって有効画面幅がユーザーの環境によって逐一変わるほか、ブラウザの解釈にも差がありますので、TABLE幅を完全に固定することはなかなか難しいようです。条件次第ではWIDTHを指定してもそれ以下の幅で表示されることがあります。また、<NOBR>も効かずに改行されてしまうことがあります。 邪道かもしれませんが、各列に背景と近い色のダミーの画像をサイズを絶対値(ピクセル)で指定して貼ればその列は画像幅以下にはなりません。それでもたとえばテキストの大きさを「最大」にされてしまえば幅が画像よりも広がってしまう可能性がありますので、スタイルシートで文字のサイズを固定すればよいかと思います。 ちょっと自信がありませんが、ご参考になればと思います。
お礼
ご回答ありがとうございます。 テーブル幅を完全に制御するのは難しいことなのですね。 画像のスペーサを入れるのはそのためなんですね。
- sesame
- ベストアンサー率49% (1127/2292)
>>実際やってみるともっと幅が伸びる気がするのです。 テーブルの内容(テキスト、画像)が、セル幅に収まりきらない量なので伸びてしまっているのでは? テーブル幅は セル内容→セル幅指定→テーブル幅指定 の順で優先されます。
補足
またの書き込みありがとうございます。 おっしゃる状態にはなっていないです。 質問の仕方を少し変えさせていただきますと、 <table cellspacing=1 cellpadding=4 border=0> <tr> <td bgcolor=#cccccc><img src="img.gif" width=100 height=100></td> <td bgcolor=#cccccc><img src="img.gif" width=100 height=100></td> </tr> </table> セルに100x100の画像を入れるとします。 このとき、tdタグにあえてwidth属性を指定するときはいくつにすればいいのですか?
- sesame
- ベストアンサー率49% (1127/2292)
CELLPADDINGはセル枠とセル内容との余白だから、セル幅に含まれるでしょう。 だから4は足されません。 100*2+1*3=203 になるはず。
補足
ご回答ありがとうございます。 わたしも最初そう思っていたのですが、 実際やってみるともっと幅が伸びる気がするのです。
補足
書き込みありがとうございます。 教えていただいたこと、よくわかりました。 それからいろいろ試してみたのですが、 tdに100x100の画像を入れてみたところ、 IEの場合、tdのheight属性はtd内のパーツプラスcellpaddingの幅みたいです。 つまり、cellpaddingが4とすると、height=108となるようです。 widthとheightの値が違っているのがどうも腑に落ちないのですが・・・。 Netscapeの場合はwidth,heightとも100のようです。 詳細をご存知でしたら、また書き込んでいただければ幸いです。