• ベストアンサー

あの<TABLE>で良く使う記述と同じ意味のCSS

よくつかうテーブルの記述、 <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0> これと同じ意味合いをもつCSSの記述の方法はどうかくのでしょうか? border:0とpadding:0の指定だけでは、明らかに足りてない(CELLSPACINGに相当する部分が不足している)と思うのですが、、、どのように記述したら良いのでしょう。 よろしくお願いします。

  • HTML
  • 回答数5
  • ありがとう数4

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

  • ベストアンサー
  • Adams2001
  • ベストアンサー率67% (70/103)
回答No.5

表(TABLE)要素のスタイルシートについては、CSS Level2で定義されています。実装されているのはIE5.0以降とNetscape6などGecko系だけだと思います(どちらも完璧ではないようです)。 仕様上は分離ボーダーモデルで border-spacing:0 を指定すればボーダー間の隙間が0になります。が、IEもGeckoも実装が完璧ではないのでちょっと小細工した記述をしてやる必要があるようです(IEは分離ボーダーモデルの動作が仕様通りではなく、Geckoは結合ボーダーモデルがサポートされていない、と思う)。 <style type="text/css"> table { border-collapse:collapse;border-spacing:0 } </style> ボーダーを指定しなければ違いがわかりませんが、実際にはIEは結合ボーダーモデル、Geckoは分離ボーダーモデルでボーダー間0でレンダリングされるようです。以下のCSSではセルに1pxのボーダーが与えられますので、違いがわかるかと思います。 <style type="text/css"> table {border-collapse:collapse;border-spacing:0 } td {border:1px solid black;} </style> 細かい説明は省略というか荷が重いので、参考URLのCSS2の仕様書(和訳)を読んでください。かなり難解ですが(^_^;)

参考URL:
http://www.fan.gr.jp/~kaz/rec-css2/index.html
kokucho81
質問者

補足

Adams2001さん、ありがとうございます!! (こういう回答をこそ所望しておりました。)

その他の回答 (4)

  • next-co
  • ベストアンサー率28% (43/149)
回答No.4

サンプルのHTML記述では、確かにセルに隙間が入ります。 下記のように、<table>タグを変更すればなくなると思いますが? 質問は、<table>タグに「border="0" cellspacing="0" cellpadding="0"」を指定いないでCSSで、できないかと言うことでしょうか? IEの場合、<table>がデフォルトの時、cellspacingに値が入っているように思います。 CSSですと、td { margin: 1px }のように。 CSSの優先度はIEの場合、CSS->HTMLのはずですが<TABLE>はHTMLが優先されているようです。 <table width="200" cellspacing="0"> <tr> <td bgcolor="#204060">A</td> <td bgcolor="#204060">A</td> <td bgcolor="#204060">A</td> </tr> <tr> <td bgcolor="#204060">A</td> <td bgcolor="#204060">A</td> <td>A</td> </tr> <tr> <td>A</td> <td>A</td> <td>A</td> </tr> </table>

kokucho81
質問者

お礼

next-coさん、再びありがとうございます。 >質問は、<table>タグに「border="0" cellspacing="0" cellpadding="0"」を>指定いないでCSSで、できないかと言うことでしょうか? そうです。もっといえば、質問にも書いておりますように、 cellspacing=0 の部分をCSSでどうかくのか?、書けるのか? ということを質問しております。

  • gellop
  • ベストアンサー率35% (19/54)
回答No.3

始めまして。 スタイルシートって考え方が少し違うようですね。 私も思考錯誤の繰り返しですが、下記のソースを一度 試してみてはどうでしょうか? 少しはキッカケになると思います。 <STYLE TYPE="text/css"> .blue{ color:#999900; line-height:100%; width:100px; padding:10px; text-align:center; background-color:#000099; } .yellow{ color:#000099; line-height:100%; width:100px; padding:10px; text-align:center; background-color:#999900; } .matome {line-height:100%;} </STYLE> </HEAD> <BODY> <P> <DIV CLASS="matome"><SPAN CLASS="blue">blue</SPAN><SPAN CLASS="yellow">yellow</SPAN></DIV> <DIV CLASS="matome"><SPAN CLASS="yellow">yellow</SPAN><SPAN CLASS="blue">blue</SPAN></DIV> </P> </BODY> <HTML> 「テーブル」という考え方自体がスタイルシートには無いような気がしています。

kokucho81
質問者

お礼

gellop さん、ありがとうございます。 なかなかおもしろい発想だと思います。 でも、テーブルという概念が崩れてしまうと、 データとしての意味がなくなってしまいます。。。。 (テーブルであれば、該当部分をCSV形式に吐き出したり、  ソートしたりすることが出来ますわけで。。。)

  • next-co
  • ベストアンサー率28% (43/149)
回答No.2

セル間の隙間を空けない場合は、CSSを必要としないと思いますが。 HTMLで、<TABLE>や<TH>にサイズなど何も指定していなければ、隙間は空かないはずですが? もし隙間が空く場合は、HTMLの記述に誤りがあるのではないでしょうか? CSSはセル内の特定の個所を空けたりするのに使用します。 その場合は、<td>タグにpaddingプロパティーで間隔を空けることができます。 <TABLE>タグには、marginプロパティーは効果がないように思います。 paddingを指定した場合、<TABLE>要素と他の要素(親要素や子要素)との間隔を空けます。

kokucho81
質問者

お礼

next-co さん、ありがとうございます。 >セル間の隙間を空けない場合は、CSSを必要としないと思いますが。 >HTMLで、<TABLE>や<TH>にサイズなど何も指定していなければ、 >隙間は空かないはずですが? しかし、例えば、 <style type=text/css>table{ border:0px margin:0px }</style> <body> <table width="200"> <tr> <td bgcolor="#204060">A</td> <td bgcolor="#204060">A</td> <td bgcolor="#204060">A</td> </tr> <tr> <td bgcolor="#204060">A</td> <td bgcolor="#204060">A</td> <td>A</td> </tr> <tr> <td>A</td> <td>A</td> <td>A</td> </tr> </table> </body> というようにした場合、これをセル間があいているというのではないでしょうか? テーブルには、背景色以外何も指定していませんが、 セル間があいているのではないでしょうか? (「現実的な意味でのデファクトスタンダードである」IE基準として考えて) next-coさんの環境では、テーブルのデフォルトではセル間が詰まっておりますでしょうか?

  • kaadii
  • ベストアンサー率18% (2/11)
回答No.1

<style type=text/css>table{ border-top-width : 0em; border-right-width : 0em; border-bottom-width : 0em; border-left-width : 0em; margin:0px }</style> これを貼り付けてください。テーブルだったら上と同じですよ。 他にもtableをspanやulに変えることも出来ますよ。 ▼詳細 -BORDER=0------------ border-style : solid; /*ボーダースタイルを実線*/ border-color : #0000ff; /*ボーダーカラーを青*/ border-top-width : 1em; /*上ボーダーをフォントサイズの 1倍*/ border-right-width : 2em; /*右ボーダーをフォントサイズの 2倍*/ border-bottom-width : 1em; /*下ボーダーをフォントサイズの 1倍*/ border-left-width : 2em; /*左ボーダーをフォントサイズの 2倍*/ ----------------- -CELLSPACING=0 CELLPADDING=0- 要素の各マージンを一括:margin:0px 上マージン :margin-top:0px 下マージン :margin-bottom:0px 左マージン :margin-left:0px 右マージン :margin-right:0px -----------------

kokucho81
質問者

補足

kaadiiさん早速のありがとうございます。 ところで、kaadiiさんの環境では、本当にそれで border="0" cellpadding="0" cellspacing="0" と同じように見えていますか? 私もはじめに border:0; margin:0; padding:0 と記述して、同じように見えなかったため 投稿させていていただいたのですが。。。 私の見たところ、明らかにセルとセルの間があいていると思うのですが。。。 (各セルの背景に色をつければ良く分かります) もしよろしければお教えてください。 この隙間をなくすにはCSSでどのように記述すればよろしいのでしょうか?

関連するQ&A

  • <table>の「cellpadding」と「cellspacing」のタグを、CSS2で記述する場合

    <table>の「cellpadding」と「cellspacing」という、表のセルとセルの間隔を指定できるものがありますが、CSS2ではどのように記述すればいいのでしょうか?

  • テーブルタグの属性をスタイルシートで記述するには?

    <table width="730" border="0" cellspacing="0" cellpadding="0"> をCSSで記述する場合に足らない部分や間違っているところを教えてください。 <table class="test"> table.test{ width: 760px; }

    • ベストアンサー
    • HTML
  • CSSでテーブルを表示させるには

    CSSでテーブルを表示させたいのですが、やり方が分かりません。教えてください。 現在は、HTMLで以下のように記述しています。 -------------------------------------------------------- <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td bgcolor="#000000">テキスト</td> </tr> </table> -------------------------------------------------------- 具体的には、クラスを指定して、<div class="table">テキスト</div> と記述したときにテーブルを表示させたいです。 回答よろしくお願いします。

    • ベストアンサー
    • CSS
  • 【HTML&CSS】テーブルの正しい作り方

    はじめまして。 Webページで、テーブルを作成する際の正しい手順について迷ってしまっているので、ご助力いただければ幸いです。 現在、XHTML1.0TとCSSでページを作成しています。 テーブルの作成は以前からしていましたが、CSSが絡むようになってから、どの方法がベストなのかがわかりません。 作成はDreamweaverとテキストエディタでの手書きと両方行っています。 疑問を抱いているのは、以下の点です。 ☆ HTMLの<table>に対するborder属性、width属性、cellspacing属性、cellpadding属性は使用するべきなのか? 今現在は、<table><tr><th><td>のみで骨格を作成し、属性指定は行っておりません。するとすればthのscope属性くらいです。 ボーダーの指定には、table th tdそれぞれにCSSで上下左右のボーダー指定を行い、border-collapseプロパティで、セル間の隙間をなくしています。横幅もCSSのwidthプロパティを使用しています。 セル内の余白については、thやtdに対してpaddingプロパティで指定をしております。 この方法で特に問題なくできてはいるのですが、実際にwidth border cellpadding cellspacingの属性がいまだに非推奨になっていないようですし、ちょっと不安です。 みなさんはどのように作成しているのでしょうか? Dreamweaverの参考書などでは、tableに対して上と左のボーダー、tdに対して、右と下のボーダーを指定して、border-collapseで隙間をつぶす方法が紹介されていたりもしました。 ただ、自分は、tdの上下左右のボーダーを指定してborder-collapseで隙間をなくしていますが、結果は同じ表記になります。 tableに上と左のボーダー、tdに右と下のボーダーと指定すること自体にはどのような意味があるのでしょうか? 混乱しているため、少々文章がおかしくなっているかもしれません。 意味が分かりづらい部分がありましたら、補足させていただいたいと思っています。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • css(div)の中にtableタグを使うとなぜかcellpaddingがきかない

    cssのdivの中にtableタグを入れ子にして作成していますが、中側tableのcellpaddingを5に指定しているにもかかわらず余白があきません。 過去ログにCSSの設計思想からすると、DIVの中にTABLE要素を組み込むことは論理矛盾であると書かれていましたが、複雑な表になってくると知識がないため、テーブルを使っているのが現状です。 なぜ余白があかないのでしょうか?また対応する方法はあれば教えていただきたいです。よろしくお願いします。 <div id="fee_table"> <table width="460" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#C4D6A7"><table width="460" border="0" cellspacing="1" cellpadding="5"> <tr> <td bgcolor="#FFFFCC">テキスト</td> <td valign="top" bgcolor="#FFFFFF">テキスト</td> </tr> <tr> <td bgcolor="#FFFFCC">テキスト</td> <td valign="top" bgcolor="#FFFFFF">テキスト</td> </tr> <tr> <td bgcolor="#FFFFCC">テキスト</td> <td valign="top" bgcolor="#FFFFFF">テキスト</td> </tr> </table></td> </tr> </table> </div> ■---css---------------------------------------■ #fee_table { font-size: 95%; margin : 10px 0 10px 15px; }

  • tableをcssで表記したい

    下記のhtmlのスタイル部分をcssで表記したいのですが、 どのようにすればよいのでしょうか? tableの種類が一つの場合はできるのですが・・・ <table width="100" border="1" cellpadding="1" cellspacing="1" bgcolor="#AAAAAA"> <tr> <td width="30" bgcolor="#FFFFFF">a</td> <td ">b</td> </tr> </table> <br> <table width="50" border="2" cellpadding="2" cellspacing="2" bgcolor="#BBBBBB"> <tr> <td width="25" bgcolor="#CCCCCC">c</td> <td>d</td> </tr> </table>

  • CSS中央そろえについて

    CSSを使用し、中央そろえを行っているのですが、winNN、winOperaでテーブル事態がセンターによりません。テーブルを寄せるのには無理があるのでしょうか ▼CSSファイル -------------------- /*TABLE*/ body { border: 0; margin: 0; padding: 0; font-family:Verdana,Arial,Helvetica,sans-serif; color:#333333; background:#fff; text-align: center; } #layout #frame{ border: 0; margin: 0; padding: 0; width: 300px; background: #ccc; } -------------------- ▼HTMLファイル <div id="layout"> <table cellspacing="0" cellpadding="0" summary=" " id="frame"> <tr> <td>aaa</td> <td>aaa</td> </tr> </table> </div>

    • ベストアンサー
    • CSS
  • tableとcellspacingとcellpadding

    動的に生成されたHTMLに以下が記述されています。 <table class="type" border="0" cellspacing="2" cellpadding="1"> これを外部CSSを使って、cellspacing、cellpaddingをともに「0」としたいのですが、 記述方法がわかりません。 よい方法をご存じのかたはおられないでしょうか。

    • ベストアンサー
    • HTML
  • tableをCSSで書き直すには(HTMLソース付き)

    よろしくお願いします。 <table cellpadding="0" cellspacing="0"> このHTMLをそのまま、CSSしたらどのようになりますか? paddingを0pxにしても、なぜか同じになりません。 以上、どうぞよろしくお願い申し上げます。

  • cssで、1行2段のtableを記述するには?

    cssで、1行2段のtableを記述するには? → htmlのページに以下を挿入しました。 <table> <tr> <td width="2"></td> <td width="588"></td> </tr> </table> → htmlのページの<head>と</head>の間に以下を挿入しました。 <link rel="stylesheet" type="text/css" href="table.css"> → table.cssファイルを、onimotsuさんの指示に従い、以下のように記述しました。 TABLE{width : 640px;border-width : 0px 0px 0px 0px; padding-top : 0px;padding-left : 0px;padding-right : 0px; padding-bottom : 0px; background-color : #FFFFFF;} → table.cssファイルに以下を挿入するにはどうしたらいいのでしょうか? いろいろ試しましたが、うまくいきません。 <tr> <td width="2"></td> <td width="588"></td> </tr> → うまく挿入できれば、htmlのページのtableの項は次のようにすっきりとなります。 <table> </table> よろしくおねがいします。

専門家に質問してみよう