※ ChatGPTを利用し、要約された質問です(原文:colspanを使うと正しく表示できない?!)
このQ&Aのポイント
あるwebシステムで現在の予約数を表示するようなhtmlを作成しています。tableを使って、td内に予約できる数をcolspanで指定して、現在の予約状況がひとめでわかるように表示しているのですが、なぜか正しく表示できなくなってしまいました。ブラウザもie6からie8にはなったのですが。
tableのwidthがborderの幅を考慮していないため、幅の指定がうまく行っていない可能性があります。また、テキストの表示位置や背景色の幅に微妙な差があるように見えることも問題です。過去にはwidth無しのcolspan指定だけで表示できていたが、ブラウザのバージョンアップによって表示が崩れてしまった可能性もあります。
解決策としては、tableの幅を広めに取ったり、styleを指定したり、widthを具体的に指定する方法があります。特に、table-layout:fixedというスタイルを指定することで、問題が解決する可能性があります。しかし、春頃のバージョンと比べて特に変更がない場合でもうまく動かないことがあるため、他の解決方法を試してみることをおすすめします。
あるwebシステムで
現在の予約数を表示するようなhtmlを作成しています。
tableを使って、td内に予約できる数をcolspanで指定して、
現在の予約状況がひとめでわかるように表示しているのですが
なぜか、正しく表示できなくなってしまいました。
ブラウザもie6からie8にはなったのですが。
いろいろ検索してみると、似たような質問はたくさんされていましたし、
それぞれにwidth指定もすればよい・・・のように記載されていて解決されているようでした。
でも、同じように試してみましたがダメでした。(表示結果は同じ)
サンプルとしまして、(全体で92がMAXの予約数として です)
<table width="319" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="100" height="25" colspan="2" align="center">日時</td>
<td width="100" colspan="50" align=right>50</td>
<td width="84" colspan="42" align=right>92</td>
<td width="35" height="25" align="center" bgcolor="#ffd37d">空き</td>
</tr>
<tr>
<td rowspan="12" width="55" align=center valign=top>11月26日</td>
<td width="45" align=center>0時</td>
<td width="110" colspan="55" bgcolor="#ff4500" align="center">55</td>
<td width="74" colspan="37" bgcolor=white><br></td>
<td width="35" align=center><font color=navy>37</font></td>
</tr>
<tr>
<td width="45" align=center>1時</td>
<td colspan="55" bgcolor="#ff4500"align="center">55</td>
<td colspan="37" bgcolor=white><br></td>
<td width="35" align=center><font color=navy>37</font></td>
</tr>
<tr>
<td width="45" align=center>2時</td>
<td colspan="55" bgcolor="#ff4500" align="center">55</td>
<td colspan="37" bgcolor=white><br></td>
<td width="35" align=center><font color=navy>37</font></td>
</tr>
<tr>
<td width="45" align=center>3時</td>
<td colspan="70" bgcolor="#ff4500" align="center">70</td>
<td colspan="22" bgcolor=white><br></td>
<td width="35" align=center><font color=navy>22</font></td>
</tr>
・
・
・
のような場合、<tr>内の2つめの<td>のcolspan=70も55も同じ幅で表示されます。
違う・・・といえば、align=centerでそれぞれ数字を表示させていますが
55のテキストが少し左寄り、70がcenterに表示されてるように見えます。
また、赤背景色の幅も微妙に0.xミリくらいは colspan=70の方が広いです。
tableのwidthがborderの幅を考慮していないのですが
これも問題でしょうか?
みなさん、似たような問題がでても解決されているようなのですが
自分の場合、どうやってもなかなか解決できません。
tableの幅を広めに取ったり、style指定したり、widthを入れたり・・・
因みに依然(今年の春頃まで?)は、width無しのcolspan指定だけで、
思い通りに表示できていました。
その後、ブラウザのバージョンアップがありました。
最初(春頃)はstyleで
table{
table-layout:fixed;
}
を指定したらなんとかうまく表示できました。
今回は春頃のバージョンのままで特に変更なく動かせるはずだったのですが。。。
そのままではダメなようです。
どのような方法があるのかアドバイスいただければと思います。
よろしくお願いします。
お礼
Tacosan様 colgroup・・・使ったことがありませんでした。 調べて、htmlを編集して表示させてみたところ、 最初に <colgroup span="2" width="100"> <colgroup span="92" width="92"> <colgroup span="1" width="35"> を入れただけで、ちゃんと表示できました! 散々、悩んだのでちょっと感激です(^^) ホントにこれだけでいいのか、まだ不安もあるのですが 修正量も少ないし、この方法にしてみます。 有難うございました!