• ベストアンサー

テーブルのすぐ上に表示

<table> <tr><td> aaa </td></tr> bbb </table> とすると、 bbb |aaa|(テーブルのつもり) こんな感じに表示されますが、これってどうしてこうなるのでしょうか? あと、これは組み方として問題ありでしょうか?

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

  • ベストアンサー
noname#199778
noname#199778
回答No.3

DTD上(HTMLの書き方のルールに当たります)では、table要素の直下には、caption要素、col要素、colgroup要素、thead要素、tfoot要素、tbody要素、tr要素以外の内容を直接書き込むことができません。 table要素直下にある、この規定の要素の以外の内容は、すべて書式違反の「ごみ」として扱われます。 また、テーブルは、中身のtr要素やtd要素などをすべて読み込んで、表示領域を確定した後でないと表示できません。 つまり、内容のセルの表示を調整する関係上、table要素の終止タグまでを認識した後でないと、テーブルの表示領域が確保できず、それまではテーブル全体が表示できないということになります。 ここからは推測ですが、このテーブルの表示領域に関係する要素を読み込んでいる際に、それらで定義されない内容が出てくると、それらはテーブルの内容ではないものとして先に処理されてしまうのではないでしょうか。 結果として、テーブルは表示領域を確保するまで表示できないので、テーブルのソース内の「ごみ」が吐き出された後に、表示領域が確定したテーブルが表示されるということなのではないかと推測します。 間違っていたらごめんなさい。 ソースの書き方としては、明確に書式違反で、問題ありです。 テーブルの上につけるキャプションを用意したいのであれば、#1の方が挙げられているようにcaption要素で用意するべきと思います。 もし良ければ、W3CのサイトでDTDなどを確認してみると良いでしょう。 参考URLは、Table要素に関する定義を解説しているページです(英語)。 DTDの読み方を解説しているページなどを探してみて、照らし合わせて解釈すると良いと思います。 参考まで。

参考URL:
http://www.w3.org/TR/html401/struct/tables.html#edef-TABLE
upas
質問者

お礼

なるほど、問題があるから上に表示されるんですね。 サイト参考にさせていただきます。 ご回答有難うございました 遅れてすみません

その他の回答 (2)

noname#10926
noname#10926
回答No.2

罫線の幅があるから仕方がない。 <TABLE cellpadding="0" cellspacing="0"> <TBODY> <TR> <TD>aaa</TD> </TR> </TBODY> </TABLE> 罫線幅、余白を0にすれば bbb aaa と表示される。

upas
質問者

お礼

仕方ないんですか~ HTMLとか初心者でまだ勉強中で・・・細かい事までは良く分からなくて。 回答有難うございました 遅れてすみませんでした

  • shy00
  • ベストアンサー率34% (2081/5977)
回答No.1

タグの問題あり!です <table> <tr> <td> aaa </td> </tr> <tr> <td> bbb </td> </tr> </table> と、「bbb」<tr>と<td>で囲って記載しましょう もし、tableのすぐ上に書きたい場合は <table> <caption> bbb </caption> <tr> <td> aaa </td> </tr> </table>

upas
質問者

お礼

やっぱりそうですよね^^; なんか不思議な現象だったもので。 お礼遅れてスミマセンでした ご回答有難うございました。

関連するQ&A