- ベストアンサー
タグ内での改行について
- テーブルタグを使用して画像を配置する際、改行が見栄えに影響する場合があります。
- 改行をなくすことで、画像と罫線の間にできる隙間をなくすことができます。
- ブラウザによっても表示が異なる場合があるため、ブラウザの種類にも注意が必要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>古い書き方だから改行による崩れもおきる、ということなのでしょうか?? 正確に言うと「IEの互換モードでは」と言う事です。IEは以前、他のブラウザを追い落とすために、独自仕様でユーザーの囲い込みをしてきました。そのために、IEでないと表示できないページがたくさん増えました。HTML4.01(1999)以降「Webページはより複雑化し、限られた環境にしか適応しなくなり、相互運用性問題に悩まされることとなり、障害を持つ人々にアクセス障壁が設けられてしまう。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )」の反省から、ウェブ標準が浸透して、やっと最近になってIEもウェブ標準に従うことになりました。 ところが、過去のIEの仕様に合わせたページもたくさん残っていますから、それらを表示するために互換モードがあります。そのためです。IEだけの問題で、他のブラウザではそのようなことは置きません。 HTMLでは、『本仕様は、・・・【中略】・・・スペース文字類については、レンダリングその他の挙動を示すことはない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/text.html#h-9.1 )』 と明記されています。よって<img src="" width="" height="" alt="">(改行)(水平タブ)</td>の(改行)(水平タブ)は無視されなければならないのです。!! いずれにしても検証には他のウェブ標準なfirefoxなどの他のブラウザを使用するのが良いです。firefoxとfirebugで、何処がどう影響しているかはすぐ分かるはず。 ★tableを使ってはいけない・・ 「単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.1 )」 「ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )」 これは、最も重要な基本です。
その他の回答 (2)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
tableに画像を入れることはあまりないですよ。tableをデザインのために使用するのはダメですから・・・ ちゃんと仕様どおりに書いて <table border="1"> <tbody><!-- tbodyは必須だよ --> <tr> <td> <img src="./images/abc2.jpg" width="200" height="200" alt="" style="margin:0;"> </td> </tr> </tbody> </table> としてみましたが、--タブは に置換してある。 <table border="1"> <tbody> <tr> <td><img src="./images/abc2.jpg" width="200" height="200" alt="" style="margin:0;"></td> </tr> </tbody> </table> と比較して差はありません。firefox,Opera,Chrome,safari,IE 唯一、差が出るのはIEが互換モードで動作しているときですね。 いまどき、互換モードでページを作成することはないですから、ちょっと気がつきませんでした。 ⇒DOCTYPEスイッチ-HTMLの基本( http://www.htmq.com/htmlkihon/302.shtml ) ※教科書的な説明で「改行は影響しない」と聞いていたので・・・。 そりゃそうでしょう。教科書には標準モードでしか説明しないはず。 ★ただし標準モードだと、わずかに隙間が開くはずです。 画像をデザイン目的で配置するなら、それはやめてスタイルシートできちんと配置しましょう。 また、必要があってtableにしても _<table border="1" class="test" summary="てすと"><!-- html4.01ならsummaryは必須 --> __<tbody> ___<tr> ____<td> _____<img src="./images/abc2.jpg" width="200" height="200" alt="" style="margin:0;"> ____</td> ___</tr> __</tbody> _</table> ※タブは_に置換してあるので戻す。 スタイルシートで table.test{ border-collapse:collapse; border:none; table.test tr td{ border:1 solid 1px; } きちんと指定すれば、余白はないはずです。どのブラウザも全く同じになるはず!!もちろん標準モードであること。
- yambejp
- ベストアンサー率51% (3827/7415)
多くのブラウザで改行はブランクとして表示されます ただし複数の改行をいれてもブランクは一つです
お礼
早速のご回答ありがとうございます。 すみません・・・再び質問なのですが、先ほどの例ですとたとえば <tr> <td><img src="a.jpg"></td> </tr> <tr> の<tr>前後の改行のように、改行が影響しない(ブランクとして表示されない)場合もありますよね。 そのあたりがよくわからないのですが・・・ お時間ありましたら教えて下さい。
お礼
丁寧にタグまで書いていただきありがとうございます。 実は必要があって高校の教科書の問題を解いているのですが、 HTMLのバージョンがかなり古いものを使っているようで、ORUKAさんが必須と書いておられた <tbody>やimgタグの中の<style="margin:0;">も出てこないのです。 (教科書ではtableをまさにデザインのために使っていました汗) 現在はこんな書き方はもうされていないのでしょうが、教科書内から回答しなくてはいけないため困っていました・・・。 再び質問で申し訳ないのですが、古い書き方だから改行による崩れもおきる、ということなのでしょうか??