• ベストアンサー

同じwidth=200でもセル内の文字によって幅が違う

まず、大体↓な感じの表を作りました(ファイル1)。 <table width="580"> <th width="60">【A列】</th><th width="320">【B列】</th><th width="200">【C列】</th> <tr><td>D</td><td>E</td><td>F</td></tr> <tr><td>G</td><td>H</td><td>I</td></tr>      ・      ・      ・ </table> このHTMLファイルをコピーしてファイル2を作り、 セル内の文字や数値のみ修正し、 随時ブラウザを更新して確認していると、 【C列】の列幅(200)が広くなったり狭くなったりする現象が起き (その分【B列】も変化し、全体的には580のままです)、 結果的に2つのファイルは【C列】の列幅が違います。 都合上、どちらのファイルも【C列】の列幅は同じにしたいのですが、 何か良い方法はありますでしょうか。 ちなみに、セル内の文字は【B列】も【C列】もオーバー分が折り返されています。 【A列】のみオーバーしないようにしています。 ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

#3に賛成 tableに580をふったら、3列あれば、2列にしか 幅を設定しない。もしくは3列に幅を設定し テーブルには幅を設定しないのが正しいやりかた でしょう。矛盾した数値を設定すれば、表示が ずれるのは仕方ないこと。 あとセルの幅は、colgroupを使うとより確定 しやすいようです <table> <colgroup width="60"> <colgroup width="320"> <colgroup width="200"> <tr><th>【A列】</th><th>【B列】</th><th >【C列】</th></tr> ・・・</table>

noname#17693
質問者

お礼

ご回答ありがとうございます。 勉強不足ですみません・・・ colgroupすごいです。このやり方で解決しました。 皆様ありがとうございました。

その他の回答 (3)

  • chrow
  • ベストアンサー率37% (11/29)
回答No.3

おそらく、ですけれども、borderとspacingの記述がなく、その解釈が時々で異なるからではないか、と思います。 60px、320px、200pxで確かに合計は580pxになりますが、cellspacingとborder分を加えると、 1+1+1+60+1+1+1+320+1+1+1+200+1+1+1 になり、合計で604pxになってしまいます。 ところが、全体で580pxと指定されているため、それを超えた分はブラウザ側が勝手に、セルの幅を狭めることで対応しているのだと思います。 どこのセルを狭めることで対応するかは、完全にブラウザ側のその時々の解釈によりますから、更新したときに変わって見えるのも仕方がないことだと思います。 対応としては、border・cellspacing・ついでにcellpaddingも0pxで指定するというのはどうでしょうか? 少なくともブラウザの解釈の余地がなくなるわけですから、同じものができますし、違うブラウザだと違ってみえる、ということもなくなると思います。 cellpaddingなどは、ブラウザによってセル幅に含めるかどうかの解釈が違うそうですから。

noname#17693
質問者

お礼

ご回答ありがとうございます。 確かに580は矛盾してますね。もっと勉強せねばと思いました(汗

noname#16352
noname#16352
回答No.2

多分書き忘れているだけかと思いますが... <table width="580"> <th width="60">【A列】</th><th width="320">【B列】</th><th width="200">【C列】</th> 2行めが <tr>~</tr> で括られていないですよね。 こちらの環境ではセル幅が変動する症状が確認出来なかったので何とも言えませんが、 もし実ソースで<tr>~</tr>を忘れていたら入れてみて下さい。 また、th ではなく td に置き換えた場合はどうなるか検証してみて下さい。

noname#17693
質問者

お礼

ご回答ありがとうございます。 すみません。2行目は勘違いでした。確かに<tr></tr>が必要ですね。 <tr></tr>を付けて、pxを付けて、さらに全行全セルにwidthを設定したところ、【C列】の幅の差はほんのわずかになりました。 でも完全に同じにはなりませんでした。 thをtdに置き換えても変化は見られませんでした。 さらに良い方法をご存知の方がいましたらご回答お願いします。

  • coursegt
  • ベストアンサー率33% (1/3)
回答No.1

<table width="580">、<th width="60">、<th width="200">とありますが 数値の後にpxをつけてはどうでしょうか? ex) <th width="580px">

参考URL:
http://www.tohoho-web.com/css/reference.htm#width
noname#17693
質問者

お礼

ご回答ありがとうございます。 pxを付けて、さらに全行全セルにwidthを設定したところ、【C列】の幅の差はほんのわずかになりました。 でも完全に同じにはなりませんでした。 さらに良い方法をご存知の方がいましたらご回答お願いします。

関連するQ&A