HTMLで文とテーブルの間が空く理由と対策

このQ&Aのポイント
  • HTMLで文とテーブルの間が意図しない空欄ができる理由と対策について解説します。
  • HTMLとCSSで作成したホームページで、文とテーブルの間に空欄ができる現象について説明します。
  • 会社概要の<h2>タグと<table>タグの間に十数行の空欄ができる問題について、HTMLとCSSの観点から解決策を提案します。
回答を見る
  • ベストアンサー

HTMLで文とテーブルの間が空く。

現在HTMLとCSSでホームページを作成しています。 それで文とテーブルの間に意図しない空欄ができてしまいます。 この理由と対策を教えてください。 HTMLは↓ <div id="contents"> <div id="main"> <h2>会社概要</h2>       <table class="table">       <tr>       <th>社名</th>       <td></td>       </tr>       <tr>       <th>所在地</th>       <td></td>       </tr>       <tr>       <th>代表者</th>       <td></td>       </tr>       <tr>       <th>設立</th>       <td></td>       </tr>       <tr>       <th>資本金</th>       <td></td>       </tr>       <tr>       <th>従業員数</th>       <td></td>       </tr>       <tr>       <th>関連会社</th>       <td></td>       </tr>       </table> </div><!-- main end --> <div id="totop"> <p><a href="#top">ページのトップへ戻る</a></p> </div><!-- totop end --> </div><!-- contents end --> です。 この会社概要<h2>と<table>の間に十数行の空欄ができます。 CSSを取り除いてHTMLだけにしても、こう表示されます。 ご回答お願いします。

noname#218560
noname#218560
  • HTML
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
  • localica
  • ベストアンサー率52% (202/385)
回答No.2

全角スペースを使っているからでしょう。 TABにするか、削る。

noname#218560
質問者

お礼

回答ありがとうございました。 スペースを削ってみたら、きれいに改行がなくなりました。

その他の回答 (4)

  • sweyuki
  • ベストアンサー率48% (13/27)
回答No.5

十数行の空欄、と言うのは装飾上のスペースなのかテキストとしての改行なのか…。 改行が挿入されているのであれば、#2さんと#3のおっしゃるあたりが怪しいですね。 改行ではなく単純にスペースなのであれば、#1さんのおっしゃるmarginかもしくはline-heightあたり。paddingの可能性もありますが。 まあ、CSS完全にオフの状態でも出るのであれば改行<br>なんでしょうね。 ところで、#1さんがテーブルレイアウト云々と仰っていますが、こういった会社概要のコンテンツはテーブルで組むのはごく当たり前、正しい記述です。まぎれもなく「表」ですので。見せ方として全く異なる手法を用いる場合もありますが。 もしサイト全体をテーブルで組んでいるなら確かに問題ではあります。

noname#218560
質問者

お礼

CSSをオフにしてもなるので変だなぁとは思っていたんですが、テキスト上見やすくするスペースが犯人だとは・・・ あと、レイアウトはテーブルでは作成していません。 今のところ、ここだけをテーブルにする予定です。 回答ありがとうございました。

  • outbrave
  • ベストアンサー率60% (231/380)
回答No.4

ANo.2さんに賛同します。 □□□□□ <table class="table"> □□□□□□<tr> 以下、同様に全角スペースが入っていますので削除してください。

noname#218560
質問者

お礼

とても分かりやすい回答ありがとうございました。 これだけの情報で、解決法がわかるのはすごいです。 スペースには気をつけます。

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.3

NO.1さんのマージンではないとすれば、 CMSなどのシステム側でテキストの改行部分に br を混入するという素人仕様だからです。 表示されたHTMLを見れば、テーブルの各セル部分に br があるはずです。 テキスト部分の改行を反映しない設定にするか、 HTMLか書く場合には、改行をせずに1行に書くかの二択です。 1行とは、具体的には、 <h2>会社概要</h2><table class="table"><tr><th>社名</th><td></td></tr><tr><th>所在地</th><td></td></tr><tr><th>代表者</th><td></td></tr><tr><th>設立</th><td></td></tr><tr><th>資本金</th><td></td></tr><tr><th>従業員数</th><td></td></tr><tr><th>関連会社</th><td></td></tr></table>

noname#218560
質問者

お礼

分かりやすい説明とご回答ありがとうございました。 犯人は、必要のないところにあるスペースでした。

  • makkie33
  • ベストアンサー率28% (2/7)
回答No.1

CSSで、tableのmarginを設定していませんか? CSSのtableで margin:10px 10px 10px 10px; と言う記述がありませんか?(数字は適当です。) もしくは、 margin-top:10px; の様な記述です。 marginは、tableの外側の余白の設定なので、 これを「0」にすれば不自然な余白は無くなると思います。 参考までに 「会社概要」をtableの中に入れてしまえば、 このmarginに振りまわされる事はないのでは?と思いますが… そもそも、レイアウトするのにtableを使ってしまってるあたりで問題ですが…。

noname#218560
質問者

お礼

回答ありがとうございました。 テーブルのmarginには、デザインの関係上0px 0px 10px 0pxで設定しています。 また、h2にもmarginのbottomには設定していません。 CSSは外部ファイルでして、一回削除したりもしましたがHTMLが問題なのか、解決しませんでした。

関連するQ&A

  • CSSの設定方法について

    CSSは外部ファイルにし、十数枚あるHTMLに「div id=contents内にあるTableは全て共通のレイアウト」 となるよう下記のCSSを設定しました。 --------CSS----------------------------------------- #contents{margin-left: 70px;} #contents table{width: 650px; border: solid 1px #B1B2B2; border-collapse: collapse; margin: 15px 0px;} #contents tr, td ,th{padding: 4px; border: solid 1px #B1B2B2; border-collapse: collapse;} --------HTML----------------------------------------- <div id="contents">  <table>   <tr>    <th>項目</th>   </tr>   <tr>    <td>項目1</td>   </tr>  </table> </div> ------------------------------------------------------- しかし、どうしても違うレイアウトにしたいTableが出てきた為、下記CSSを追加、 HTMLは<div id="contents">の部分を<div id="login">に変更したのですが 追加CSSが反映されず、id=contentsの設定が残ったままになってしまいます。 色々いじってみたのですが、どこが間違っているのやら皆目見当がつきません。 --------追加CSS----------------------------------------- #login{text-align: center; } #login table{width: 450px; border: solid 2px #666666; border-collapse: collapse;} #login tr, td ,th{border: solid 1px #666666; border-collapse: collapse;} --------HTML----------------------------------------- <div id="login">  <table>   <tr>    <th>項目</th>   </tr>   <tr>    <td>項目1</td>   </tr>  </table> </div> 拙い文章で恐縮ですが、ご助言いただけると大変助かります。 説明不足や意味不明箇所は補足させていただきますので、どうぞよろしくお願い致します。

    • ベストアンサー
    • HTML
  • 初心者です。floatでレイアウトしてるのですが、縦線とテーブルの間を広げる方法がわかりません

    floatでレイアウトしてるのですが、縦線とテーブルの間を広げる方法がわかりません メニューとコンテンツが縦線で区切られてるのですが右側のテーブルと縦線が合体してしまいます。 縦線とテーブルの間に少し隙間を作りたいのですが、どうすればいいでしょうか? HTMLとCSSを書いておきます。よろしくお願いします。 ・HTML <div id="contents"> <table> <tr> <td>×</td><td><p>あああ</p> </tr> <tr> <td>○</td><td><p>いいい</p> </tr> <tr> <td>■</td><td><p>ううう</p> </tr> </table> <br><br> a </div> <div id="left-menu"> <ul> <li><a href="index.html" class="a8">メニュー</a></li> <li><a href="league.html" class="a8">メニュー</a></li> </ul> </div> <div id="footer"> ああああああ </div> ・CSS body { width: 900px; } #contents { float: right; width: 740px; border-left: 1px solid #999;} #left-menu { float: left; width: 150px;} #footer { clear: both; }

  • tableのヘッダを固定したい

    IE6,7,8でテーブルのヘッダを固定したいのですが うまくいきません。 条件は以下のとおりです。  ・width: ?%として大きさを可変にする。  ・ヘッダを固定する。  ・ボディにはスクロールバーをつける これまでwidthは固定で作成してきたのですが 可変にする場合どのようなcssにすればよいのでしょうか。 よろしくお願いします。 <div id="container"> <div class="headerTable"> <table border="1" cellspacing="0" cellpadding="0"> <thead> <tr> <th>あ</th> <th>い</th> <th>う</th> <th>え</th> </tr> </thead> </table> </div> <div class="bodyTable"> <table border="1" cellspacing="0" cellpadding="0" width="100%"> <thead> </thead> <tbody> <tr> <td>あaaaaaa</td> <td>い</td> <td>う</td> <td>え</td> </tr> </tbody> </table> </div> </div>

  • HTML 複雑なテーブルの作成

    今、HTMLでテーブルを作成しています。 よろしくお願いします。 下記のHTMLでテーブルを作成し 番号「18」までは、うまくいきました。 つぎに「19」を作成しようとすると 「9」のセル(rowspan="5")が下に伸びて、「19」に重なります。 何か、解決の方法はありますでしょうか? CSSでborderやclassを使用していますが省略しています。 また、widthも使用していますが省略しています。 <table cellspacing="7"> <tr> <th colspan="2">1</th> <th>2</th> <th>3</th> <th>4</th> <th>5</th> <th>6</th>       </tr> <tr> <td>7</td> <td>8</td> <td rowpan="5">9</td> <td>10</td> <td>11</td> <td>12</td> <td>13</td> </tr> <tr> <td colspan="2">14</td> <td>15</td> <td>16</td> <td>17</td> <td>18</td> </tr> <tr> <td colspan="7">19</td> </tr> </table>

    • ベストアンサー
    • CSS
  • IE8などでCSSでテーブルを中央に、テーブル内のテキストは左寄せにしたい

    お世話になっております。 ・本文・テーブルは中央揃え ・テーブルの内容は左揃え というものをCSSで作りたいのですが、 どのようにしたらいいのでしょうか。 現在のページの一部は <div id="main"> <h1>タイトル</h1>   <table border="1"> <p> 本文 </p> <tr> <td colspan="2"><h2 align="center">○○○</h2></td> </tr> <tr> <td>内容</td> <td>内容</td> </tr> ~行が続きますが省略~ </table> </div> のようになっています。 ちなみに cssのmainは「text-align:center;」を指定しておりますが、 IE8にしたところテーブルが左寄せになってしまいました。 なるべく多くのブラウザで同じような配置になるようにしたいのですが どうしたらよいでしょうか。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • HTMLのテーブルについて

    HTMLのテーブルについて 今、HTMLを勉強しています。下記のようにテーブルを作成し一部にセルの結合を行ったところ、(2)の結合したセル右端から外枠までが広がってしまいます。せっかく綺麗に見えるように上の表と下の表のセル幅を合わせても、上の表の右端が出っ張ってしまって意味がありません。 これを解決するにはどのように改善すればいいのでしょうか? <html> <head> <title>A</title> </head> <body> <table border="2"> <tr> <th>No.</th> <th>名前</th> <th width="50">備考</th> </tr> <tr> <td>1</td> <td>A君</td> <td>(1)</td> </tr> <tr> <td>1</td> <td>B君</td> <td rowspan="2">(2)</td> </tr> <tr> <td>1</td> <td>C君</td> <td></td> </tr> </table> <br> <table border="2"> <tr> <th>No.</th> <th>名前</th> <th width="50">備考</th> </tr> <tr> <td>2</td> <td>D君</td> <td>(3)</td> </tr> <tr> <td>2</td> <td>E君</td> <td>(4)</td> </tr> <tr> <td>2</td> <td>F君</td> <td>(5)</td> </tr> </table> </body> </html>

  • 2つのテーブルの幅を一致させたい

    以下のHTMLで、2つのテーブルのセル幅が一致しません。 JavaScriptではヘッダのセル幅をボディのセル幅に合わせています。 ボディ部分の文字列をすべて日本語にするとうまくいくのですが・・・ JavaScriptというよりはHtmlの問題な気がしますが、よろしくお願いします。 jqueryを使用しています。 <html> <head> <script src="js/jquery.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { headerTableWidthFit(); }); $( window ).resize(function(){ headerTableWidthFit(); }); function headerTableWidthFit() { var i = 0; $('#resultBodyTable table tbody tr:eq(0) td').each(function() { $('#resultHeaderTable table th').eq(i).width($(this).width()); i++; }); } </script> </head> <body> <div id="container"> <div id="resultHeaderTable" class="headerTable"> <table border="1" cellspacing="0" cellpadding="0"> <thead> <tr> <th>あ</th> <th>い</th> <th>う</th> <th>え</th> <th>お</th> <th>か</th> <th>き</th> <th>く</th> </tr> </thead> </table> </div> <div id="resultBodyTable" class="bodyTable"> <table border="1" cellspacing="0" cellpadding="0" width="100%"> <thead> </thead> <tbody> <tr> <td>あaaaaaa</td> <td>い</td> <td>う</td> <td>え</td> <td>お</td> <td>か</td> <td>き</td> <td>く</td> </tr> </tbody> </table> </div> </div> </body> </html>

  • 【CSS】floatで左右に並べた<div>のマージンが効かない。

    CSS(スタイルシート)においてfloatで2つのdivを左右に並べる方法は定番ですが、<div id="A">に設定したマージンが【firefox】でききません。 おそらく基礎的なことと思われますが、検索の仕方が悪いのか、 該当する質問を探し出すことが出来ませんでしたので、質問させていただきました。 どなたか、教えていただければと思います。 【HTML】--------------------------------- <div id="A">   <div class="B">    <h3>テキスト</h3>    <p>タイトル</p>    <table>     <tr>      <th scope="col">テキスト</th>      <td>テキスト </td>     </tr>     <tr>      <th scope="col">テキスト</th>      <td>テキスト</td>     </tr>    </table>   </div>   <div class="C" >    <h3>テキスト</h3>    <p>タイトル</p>    <table>     <tr>      <th scope="col">テキスト</th>      <td>テキスト </td>     </tr>     <tr>      <th scope="col">テキスト</th>      <td>テキスト</td>     </tr>    </table>   </div> </div> 【CSS】--------------------------------- #A {     margin-bottom:10px } #A h3{ background:url(../images/bg_h3_option_half.gif) no-repeat; width:380px; height:31px; padding:0 0 0 15px; margin:10px 0 0 0; overflow:hidden; font-size: 22px; color:#FFFFFF; font-style:normal; } #A div.B { float:left; width:380px; height: 100%; margin-right:20px; } #A div.C { float:left; width:380px; height: 100%; }

    • ベストアンサー
    • HTML
  • tableヘッダーの縦書き

    Bootstarapを利用しているのですが、Tableのヘッダー部を 縦書きにするにはどのようにすれば良いでしょうか? <h2>Bordered Table</h2> <div class="table-responsive"> <table class="table table-bordered table-hover"> <thead> <tr> <th>Page</th> <th>Visits</th> <th>% New Visits</th> <th>Revenue</th> </tr> </thead> <tbody> <tr> <td>/index.html</td> <td>1265</td> <td>32.3%</td> <td>$321.33</td> </tr> <tr> <td>/about.html</td> <td>261</td> <td>33.3%</td> <td>$234.12</td> </tr> <tr> <td>/sales.html</td> <td>665</td> <td>21.3%</td> <td>$16.34</td> </tr> <tr> <td>/blog.html</td> <td>9516</td> <td>89.3%</td> <td>$1644.43</td> </tr> <tr> <td>/404.html</td> <td>23</td> <td>34.3%</td> <td>$23.52</td> </tr> <tr> <td>/services.html</td> <td>421</td> <td>60.3%</td> <td>$724.32</td> </tr> <tr> <td>/blog/post.html</td> <td>1233</td> <td>93.2%</td> <td>$126.34</td> </tr> </tbody> </table> </div>

    • 締切済み
    • CSS
  • HTML?スタイルシートの表センタリングについて

    以下のSampleでやってみましたが、うまくセンタリング できません。 表をPageの真ん中に置いて かつ、表の中のセル内、文字列は左によせるには どうしたらよいのでしょうか? またこのような作業、確認は皆さんどうやって書いているのですか? ホームページビルダーでしょうか? 常に表には苦労しています、今までは<CENTER>を使っていました。キレイなHTMLを勉強しようとしているのですが 非常に難しいですね。よい方法ないでしょうか? スタイルシート部分: <style type="text/css"> div.ctable { text-align: center; /* IEでセンタリングさせる方法 */ } div.ctable table { margin: auto; /* 標準のセンタリング方法 */ text-align: left; /* IE用方法の弊害対策用 */ } </style> HTML部分: <div class="ctable"> <table> <tr><th>スタイルシート</th><th>センタリング</th></tr> <tr><td>CSS</td><td>Centering</td></tr> </table> </div>

専門家に質問してみよう