• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。)

HTML表の枠線揃え方

このQ&Aのポイント
  • HTMLを使って表を作成している際に、枠線の揃え方に問題が発生しています。
  • 特に、幅が異なる列の枠線を揃えることが困難です。
  • どのようにすればエクセルのように枠線をキレイに揃えることができるでしょうか?

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

borderおよびcellspacingの幅を考慮していないのが原因かと。 No1様、No2様が幅を調整する例をご提示なので、テーブルを入れ子にしない方法で… (入れ子をはずしてしまうのが、目的にあっているのかどうか不明ですが) CSS指定に修正しています。(枠線に色をつけることも可能) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head><title>test</title> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> table.test { border-collapse:separate; empty-cells:hide; } table.test { border:1px solid #888; border-color:#dee #288 #288 #dee; } table.test td { border:1px solid #888; border-color:#288 #dee #dee #288; } </style> </head> <body> <table class="test"> <tr> <th style="width:50px;"></th> <th style="width:135px;"></th> <th style="width:65px;"></th> <th style="width:65px;"></th> <th style="width:65px;"></th> </tr> <tr> <td>50</td> <td colspan="2">200</td> <td colspan="2">130 </tr> <tr> <td>50</td> <td colspan="2">200</td> <td colspan="2">130 </tr> <tr><td></td></tr> <tr> <td rowspan="2">50</td> <td rowspan="2">135</td> <td rowspan="2">65</td> <td colspan="2">130</td> </tr> <tr> <td>65</td> <td>65</td> </tr> <tr><td></td></tr> <tr> <td>50</td> <td>135</td> <td>65</td> <td>65</td> <td>65</td> </tr> <tr> <td colspan="3">250</td> <td colspan="2">130</td> </tr> </table> </body> </html>

yukunman29
質問者

お礼

回答ありがとうございます。 テーブルを入れ子にしない方法がスッキリして良いですね。 参考になりました。

その他の回答 (2)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

枠線とマージン分を考慮してないからですね。 もっと、おりこうな方法もあるはずですが、とりあえず、 見ながら調整すればああ これで ぴったし(IE8) <TABLE border=1> <TR> <TH width="50">a</TH> <TH width="135">b</TH> <TH width="65">c</th> <TH width="65">d</th> <TH width="65">e</th> </TR> <TR> <TD colspan="5"> <TABLE border=1> <TR> <TD width="47">50</TD> <TD width="211">200</TD> <TD width="135">130</TD> </TR> <TR> <TD width="47">50</TD> <TD width="211">200</TD> <TD width="135">130</TD> </TR> </TABLE> </TD> </TR> <TR> <TD colspan="5"> <TABLE border=1> <TR> <TD width=50 rowSpan=2>50</TD> <TD width=135 rowSpan=2>135</TD> <TD width=65 rowSpan=2>65</TD> <TD width=130 colSpan=2>130</TD> </TR> <TR> <TD width=65>65</TD> <TD width=65>65</TD> </TR> <TR> <TD width=50>50</TD> <TD width=135>135</TD> <TD width=65>65</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR> <TR> <TD width=250 colSpan=3>250</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR> </TABLE> </TD> </TR> <TR> <TD colspan="5"> <TABLE border=1> <TR> <TD width=262>250</TD> <TD width=135>130</TD> </TR> </TABLE> </TD> </TR> </TABLE>

yukunman29
質問者

お礼

回答ありがとうございます。 こつこつ合わせる必要があるのですね。 参考になりました。

  • rurino
  • ベストアンサー率55% (38/68)
回答No.1

<TABLE border=1 cellpadding="0" cellspacing="0">  <TR>   <TH width="50"></TH>   <TH width="135"></TH>   <TH width="65"></th>   <TH width="65"></th>   <TH width="65"></th>  </TR>  <TR>   <TD colspan="5">    <TABLE border=1 cellpadding="0" cellspacing="0">     <TR>      <TD width=50>50</TD>      <TD width=202>200</TD>      <TD width=132>130</TD>     </TR>     <TR>      <TD width=50>50</TD>      <TD width=200>200</TD>      <TD width=132>130</TD>     </TR>    </TABLE>   </TD>  </TR>  <TR>   <TD colspan="5">    <TABLE border=1 cellpadding="0" cellspacing="0">     <TR>      <TD width=50 rowSpan=2>50</TD>      <TD width=135 rowSpan=2>135</TD>      <TD width=65 rowSpan=2>65</TD>      <TD width=131 colSpan=2>130</TD>     </TR>     <TR>      <TD width=65>65</TD>      <TD width=65>65</TD>     </TR>     <TR>      <TD width=50>50</TD>      <TD width=135>135</TD>      <TD width=65>65</TD>      <TD width=65>65</TD>      <TD width=65>65</TD>     </TR>     <TR>      <TD width=250 colSpan=3>250</TD>      <TD width=65>65</TD>      <TD width=65>65</TD>     </TR>    </TABLE>   </TD>  </TR>  <TR>   <TD colspan="5">    <TABLE border=1 cellpadding="0" cellspacing="0">     <TR>      <TD width=254>250</TD>      <TD width=132>130</TD>     </TR>    </TABLE>   </TD>  </TR> </TABLE> cellpaddingとcellspacingの初期化と borderの分をセルの長さに加算する必要があります。 border=0ならセルの長さへの加算はいらないのですが…

yukunman29
質問者

お礼

回答ありがとうございます。 cellpaddingとcellspacingの初期化と borderの分をセルの長さに加算する必要があるんですね。 参考になりました。

関連するQ&A