タグ内での改行について

このQ&Aのポイント
  • テーブルタグを使用して画像を配置する際、改行が見栄えに影響する場合があります。
  • 改行をなくすことで、画像と罫線の間にできる隙間をなくすことができます。
  • ブラウザによっても表示が異なる場合があるため、ブラウザの種類にも注意が必要です。
回答を見る
  • ベストアンサー

タグ内での改行について

初歩的な質問ですが、教えて下さい。 テーブルタグを使って以下のように記述しました。 <table> <tr> <td><img src="a.jpg"> </td> </tr> </table> すると、画像の下部と罫線との間に隙間があいてしまって見栄えが悪かったのです。 そこで試行錯誤して以下のように訂正し、<td>~</td>間の改行をなくしたところ、隙間がなくなりました。 <table> <tr> <td><img src="a.jpg"></td> </tr> </table> なぜこのように改行が影響する場合があるのでしょうか? 教科書的な説明で「改行は影響しない」と聞いていたので・・・。 ブラウザはIEを使っています。

  • HTML
  • 回答数3
  • ありがとう数10

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.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)
回答No.2

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; } きちんと指定すれば、余白はないはずです。どのブラウザも全く同じになるはず!!もちろん標準モードであること。

1029to
質問者

お礼

丁寧にタグまで書いていただきありがとうございます。 実は必要があって高校の教科書の問題を解いているのですが、 HTMLのバージョンがかなり古いものを使っているようで、ORUKAさんが必須と書いておられた <tbody>やimgタグの中の<style="margin:0;">も出てこないのです。 (教科書ではtableをまさにデザインのために使っていました汗) 現在はこんな書き方はもうされていないのでしょうが、教科書内から回答しなくてはいけないため困っていました・・・。 再び質問で申し訳ないのですが、古い書き方だから改行による崩れもおきる、ということなのでしょうか??

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

多くのブラウザで改行はブランクとして表示されます ただし複数の改行をいれてもブランクは一つです

1029to
質問者

お礼

早速のご回答ありがとうございます。 すみません・・・再び質問なのですが、先ほどの例ですとたとえば <tr> <td><img src="a.jpg"></td> </tr> <tr> の<tr>前後の改行のように、改行が影響しない(ブランクとして表示されない)場合もありますよね。 そのあたりがよくわからないのですが・・・ お時間ありましたら教えて下さい。

関連するQ&A

  • htmlタグを改行もせずに隙間なく書き続けると問題ありますか?

    htmlタグを改行もせずに隙間なくすると問題ありますでしょうか? ページ内の文字数(バイト数?)を 減らそうと思い、隙間なくしてみたいのですが。 例えば、改行して <table~省略> <tr> <td> <font~省略> </td> </tr> </table> を、 <table~省略><tr><td><font~省略></td></tr></table> と改行せずに、連ねてしまうと、 何か問題はありますでしょうか? 検索で順位が下がるとか、タグが読みづらくスパム扱いされたりはしないでしょうか? よろしくお願いします。

  • 助けてください><IE上で1pxのズレ

    こんにちわ。 組んだテーブルに謎の1pxがはいってしまいます。 ファイヤーフォックスでは正常なのですがIEでは1pxの隙間ができてしまうようで。 どなたか分かる方いらっしゃたらお願いします>< <table width="660" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="2" valign="top"> <img src="img/test_01.jpg" width="660" height="177" alt=""></td> </tr> <tr><td rowspan="2" valign="top"> <table width="316" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="2"> <img src="img/test_02.jpg" width="316" height="46" alt=""></td> </tr> <tr> <td> <img src="img/test_05.jpg" width="144" height="47" alt=""></td> <td> <img src="img/test_06.jpg" width="172" height="47" alt=""></td> </tr> <tr> <td colspan="2"> <img src="img/test_08.jpg" width="316" height="169" alt=""></td> </tr> </table> </td></tr> <tr><td valign="top"> <table width="344" border="0" cellpadding="0" cellspacing="0"> <tr><td> <table width="344" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <img src="img/test_03.jpg" width="181" height="62" alt=""></td> <td> <img src="img/test_04.jpg" width="163" height="62" alt=""></td> </tr> <tr> <td colspan="2"> <img src="img/test_07.jpg" width="344" height="83" alt=""></td> </tr> </table> </td></tr> <tr><td> <table width="344" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <img src="img/test_09.jpg" width="160" height="62" alt=""></td> <td> <img src="img/test_10.jpg" width="184" height="62" alt=""></td> </tr> <tr> <td colspan="2"> <img src="img/test_11.jpg" width="344" height="23" alt=""></td> </tr> <tr> <td> <img src="img/test_12.jpg" width="160" height="32" alt=""></td> <td> <img src="img/test_13.jpg" width="184" height="32" alt=""></td> </tr> </table> </td></tr> </table> </td></tr> <tr><td colspan="2"> <table width="660" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="5"> <img src="img/test_14.jpg" width="660" height="141" alt=""></td> </tr> <tr> <td> <img src="img/test_15.jpg" width="130" height="150" alt=""></td> <td> <img src="img/test_16.jpg" width="130" height="150" alt=""></td> <td> <img src="img/test_17.jpg" width="140" height="150" alt=""></td> <td> <img src="img/test_18.jpg" width="130" height="150" alt=""></td> <td> <img src="img/test_19.jpg" width="130" height="150" alt=""></td> </tr> <tr> <td colspan="5"> <img src="img/test_20.jpg" width="660" height="40" alt=""></td> </tr> </table> </td></tr> </table>

  • TD、THタグ内の水平罫線(HR)の使用について

    テーブルタグの TH, TD 内にHR(水平の罫線)を引くのですが これは使っても良いのでしょうか? <table> <tr> <td> テスト1 <hr>   <!-- ここ --> テスト2 </td> </tr> 動作はしているのですが、お勧めできないことでしたら、やめようと思います。 中にテーブルタグで分けるのが面倒なので、水平罫線<HR>で出来れば便利だと思いまして質問しました。 他に何か見栄えも良くておすすめできるものがありましたら教えてください。

    • ベストアンサー
    • HTML
  • このHTMLは間違えですか?

    テーブルタグにおいて、 <table> <tr><td><img src="ok.gif"></td></tr> <tr><td><img src="no.gif"></td></tr> </table> <table> <tr><td><img src="ok.gif"></td></tr> <img src="no.gif"> </table> この2つの構文はほぼ同じ表示になります。(細かい違いを気にしなければ) 下記は間違えでしょうが、使ってもかまわないということでしょうか?

    • ベストアンサー
    • HTML
  • cssで商品を並べる時、テーブルを使わないでできる?

    cssとっかかったばかりの初心者ですのでわけのわからない質問ばかりしてしまいますが、よろしくお願いします。 cssを使ったページに商品を並べる場合、テーブルを使ってレイアウトするのが楽と思いますが、テーブルを使わないで2列、3列というようにできますか? 普通にテーブルを使ったら <table> <tr> <td>item1</td> <td>item2</td> <td>item3</td> </tr> <tr> <td><img src="img/01.jpg" width="100" height="100"></td> <td><img src="img/02.jpg" width="100" height="100"></td> <td><img src="img/03.jpg" width="100" height="100"></td> </tr> </table> ですが、テーブルタグをつかわず、cssで列を指定ってできますか? それとも、商品ラインナップの場合はテーブルで入れるのが普通ですか??? いろいろやってみたんですが、わからなくなったので、質問します。 よろしくお願いします。

    • ベストアンサー
    • XML
  • tableを自動作成・追加できるプログラムを探しているのです・・

    <table> <tbody> <tr> <td colspan="9" align="center" </TD></td> </tr> <tr> <td colspan="9" <A href="http:// target=" _blank"></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td rowspan="3"></td> <td></td> <td><img src=".jpg"></td> <td></td> <td> <table> <tbody> <tr> <td></td> <td></td> <td></td> </tr> </tbody> </table> </td> <td></td> <td><img src=".jpg"></td> <td><img src=".jpg"></td> <td></td> </tr> <tr> <td></td> <td><img src=".jpg"></td> <td></td> <td> <table> <tbody> <tr> <td></td> <td></td> <td></td> </tr> </tbody> </table> </td> <td></td> <td><img src=".jpg"></td> <td><img src=".jpg"></td> <td></td> </tr> <tr> <td></td> <td><img src=".jpg"></td> <td></td> <td> <table> <tbody> <tr> <td></td> <td></td> <td></td> </tr> </tbody> </table> </td> <td></td> <td><img src=".jpg"></td> <td><img src=".jpg"></td> <td></td> </tr> <tr> <td><img src=".jpg"></td> </tr> </tbody> </table> こんなtableを作成し(tdには数値・文字列・画像が入ります)一つのhtmlファイルに一ヶ月に10個ほど手動でtableを追加しています。 これを入力フォームより数値や文字列・参照画像を入力し、月ごとのhtmlにしてるので、指定したhtmlに反映させるようなプログラム(cgi? javascript? PHP?)をご存じの方いらっしゃいませんでしょうか?

  • テーブル高さ指定タグについて

    テーブル高さ指定タグについて サイズがバラバラの4枚の画像をテーブルを使って同じ幅・高さ縦横各2枚並べて表示したいと思っています。 下記のとおり高さ・幅300と指定をしているにもかかわらず、400×400pixの画像が高さを超えて目いっぱい表示してしまいます。 <table border="1" width="600" height="600" cellspacing="0" cellpadding="0"> <tr> <td width="300" height="300" align="center"> <IMG border="0" src="http://○○○○/f000000_1.jpg"></td> <td width="300" height="300" align="center"> <IMG border="0" src="http://○○○○/f000000_2.jpg"></td> </tr> <tr> <td width="300" height="300" align="center"> <IMG border="0" src="http://○○○○/f000000_3.jpg"></td> <td width="300" height="300" align="center"> <IMG border="0" src="http://○○○○/f000000_4.jpg"></td> </tr> </table> どうすれば、すべて300×300pixの範囲内におさめることができるのでしょうか?

    • ベストアンサー
    • HTML
  • スワップイメージ+リンクの変更

    まったくの素人ですが、お教えください。 以下のようなテーブルにそれぞれ画像とリンクをつけようとしています。 <table> <tr> <td rowspan="3"><a href="hoge.html"><img src="hoge.jpg"></a></td> <td><a href="a.html"><img src="a.jpg"></a></td> </tr> <tr><td><a href="b.html"><img src="b.jpg"></a></td></tr> <tr><td><a href="c.html"><img src="c.jpg"></a></td></tr> </table> a.jpg/b.jpg/c.jpg(以下、abc) がそれぞれメニューバーの項目で、 hoge.jpgを大きなメインの画面にしたいと思っています。 このとき、abcのいずれかをマウスオーバーするたびに、それぞれのイメージがhogeのエリアにスワップされ、かつそれぞれの項目のリンク(a.html/b.html/c.html)がhoge.htmlと置き換わるようなjavascriptを作りたいと考えています。 イメージのスワップだけならいくつも見つけることができたのですが、イメージとリンクが両方ともスワップされるようなものを、見つけることができませんでした。もしそのようなjavascriptがweb上にありましたら、お教えください。

  • カウンタとその左右につける画像の隙間をなくしたいのですが

    カウンタの左右に画像をつけて かわいらしいカウンタにしたいのですが どうしてもカウンタの数字の左右の画像との間に 隙間ができてしまいます。 今は下記のようにテーブルタグでつなげているのですが 完全に隙間をなくすことができません。 どうしたら完全に隙間をなくせますか? <TABLE Border="0" CellSpacing="0"CellPadding="1"> <TR> <TD>  <IMG Src="material/counter_r.gif" Border="0" Width="22" Height="25"></TD><TD><img src="cgi-bin/・・・/count.cgi?gif" Border="0"> </TD> <TD>  <IMG Src="material/counter_l.gif" Border="0" Width="22" Height="25"> </TD> </TR> </TABLE> お忙しいところ申し訳ありませんが 教えていただけるとうれしいです。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • JavaScriptを入れるとtdタグ内の高さが広がる

    CSSにて高さ指定もしてあるのですが、JavaScriptの記載あるtdタグの高さがIEだと広がってしまいます。 この現象はFireFoxだと現れません。 下記コードですと3段目と4段目のtdの高さが他の段に比べ広がってしまいます。 何か解決策とうございましたら、教えてください。 -----------JavaScript関数----------- <script language="javascript"> function goNext() {  if (confirm("確認")) {   return true;  } else {   return false;  } } </script> -----------html----------- <table id="tablea"> <tr><td class="b"><img src="img.jpg"/></td></tr> <tr><td>&nbsp;</td></tr> <tr><td class="b"><form action="5_4modify1_pla.html" onsubmit="return goNext();"><input name="bb" type="image" src="img.jpg" width="150" height="30"/></form></td></tr> <tr><td class="b"><form action="5_4modify1_pla.html" onsubmit="return goNext();"><input name="bb" type="image" src="img.jpg" width="150" height="30"/></form></td></tr>  <tr><td class="b"><img src="img.jpg"/></td></tr> </table> -----------CSS----------- .b {height: 30px;} #tablea { width: 180px; height: 200px;} ----------------------

    • ベストアンサー
    • HTML

専門家に質問してみよう