• ベストアンサー

テーブルの罫線をセルで表現するのは?

先日「縦罫線を1本だけ細くしたい」の質問をした者です。 http://oshiete1.goo.ne.jp/qa4883479.html 教えていただいた背景画像を使った方法をやってみたのですが、 colに設定したパディングが効かないため、テキストが外見上の縦罫線の上に乗る可能性に気付いてしまいました。 これは美しくない。 仕方ないので、全部の<td>タグにclass属性をつける覚悟は決めたんですが、 あと一つだけ自分の中で「反則じゃね?」という方法があります。 本来は横5列のテーブルですが、これを9列にして 2,4,6,8列目の幅を1~2ピクセルに、背景色を黒にして 視覚上、罫線に見せるという方法です。 これって、やっぱり反則でしょうか?

noname#106515
noname#106515
  • HTML
  • 回答数6
  • ありがとう数0

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

  • ベストアンサー
回答No.6

まっとうな記述に古いIEだけが対応してないくらいで、そこまで非 論理的な記述に走るってのは、ちょっと引きますね。全くスマート じゃぁありません。そもそもクラスを指定する方が無駄なカラムを 何列も増やすより楽なように感じますが。 ちなみに前回の私の回答は、IE8対応確認済みです。

その他の回答 (5)

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

どうせ販促まがいのことを考えているなら javascriptで自動にclassをつけてやればよくないですか?

回答No.4

セルを線代わりにするのはテーブルレイアウトの方法ですので、Web標準的には反則ですね。 それ以上の事は、テーブルレイアウトを使わない主義かどうかだと思います。 > colに設定したパディングが効かないため、 それはtdに指定する物では? colのborderはIE(IE8含む)は未対応です。 http://msdn.microsoft.com/en-us/library/ms535225(VS.85).aspx (col要素の対応styleの項目にborderが書かれていません) colは古くからあるタグですが、ブラウザが対応したのは比較的最近だと思います。 一部だけ細くする、というのがうまくいきませんでしたが、 2列目だけ線を引く場合は、 IE7以上、その他のブラウザはおおむね対応していると思いますが、こんな感じで出来ます。 td{border: 0 none;} td+td{border-right:1px solid blue;} td+td+td{border-right:0 none;} ご参考まで。 IE6対応はtdにclassを指定するしかないかな、と思います。

  • nori_007
  • ベストアンサー率35% (369/1048)
回答No.3

CSS でデザインでする前は良くやっていました。 今は、border で何とかすると思います。 正直ピンポイントで質問されても、具体的にどうされたいのか解らないので何とも言えません。反則の定義も解らないし・・・。

参考URL:
http://critical.s6.xrea.com/web/border.shtml
  • amanda97
  • ベストアンサー率21% (414/1953)
回答No.2

最近はテーブルで作るのが反則って言われるぐらいですから、アリですよ(^^;

  • abril
  • ベストアンサー率69% (388/560)
回答No.1

> 2,4,6,8列目の幅を1~2ピクセルに、背景色を黒にして視覚上、罫線に見せるという方法です。 > これって、やっぱり反則でしょうか? 「反則」の定義はわかりかねますが、つまり見かけ上のレイアウトの為だけに存在する空のセルの列をマークアップする、という事ですよね。 そういう「無意味さ」ではNGでしょう。それでもその方法を取るか取らないかは質問者様の自由ですが。

関連するQ&A

  • テーブルの縦罫線を1本だけ細くしたい

    5列×150行のテーブルがあるのですが、2列目と3列目の間の縦罫線だけを他の罫線より細くしたいのです。 「colまたはcolgroup要素にスタイルシートを設定すればOK」と安易に考えていたのですが、いざ設定してみると全く効かない。背景色の設定は反映されるのにボーダーの設定はダメです。 もちろん、セル一つ一つに設定すれば可能ですが、どうもスマートじゃないなと思うのです。何か手はありますか?

  • TABLEのマスの増やし方

    HTMLのテーブル?について教えて下さい。 ******************************************************************************************************************************* <TABLE class=table_a style="WIDTH: 100%"> <TBODY> <TR> <TD class=table_a_th2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR> <TR> <TD class=table_a_th2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR> <TR> <TD class=table_a_th2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR></TBODY></TABLE> ******************************************************************************************************************************* という記載で、縦3列横3列の表が出来るのですが 表の内容(枠組み)を変更する方法が分かりません。 *********************************************************** <TABLE class=table_a style="WIDTH: 100%"> <TBODY> <TR> <TD class=table_a_th2 rowSpan=2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td> <P>右列<BR class=first-child>右列</P> <P>右列</P></TD></TR> <TR> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR> <TR> ************************************************************* 作成したいのはこのようなイメージのもので 中列と右列を増やして行きたいのです。 どなたか詳しいかたご教授下さい。

    • ベストアンサー
    • HTML
  • 特定の列の<td>または<th>だけにスタイルを

    かけたいということがあります。 例えば、 ---------------------------------------------------------- <style type="text/css"> .tab1 th, .tab1 td { font-weight:normal; text-align:center; background:#fee; } .tab1 .row2 th { /* ----------------(1) */ background:#fff; } .tab1 .col2 th { /* ----------------(2) */ background:#ffff; } </style> <table class="tab1"> <col class="col1"> <col class="col2"> <col class="col3"> <tr class="row1"> <th>1</th> <th>2</th> <th>3</th> </tr> <tr class="row2"> <th>4</th> <td>5</td> <td>6</td> </tr> <tr class="row3"> <th>7</th> <td>8</td> <td>9</td> </tr> <table> ---------------------------------------------------------- だと、 1 2 3 4 5 6 7 8 9 の中の「4」は(1)により背景が白くなります。 しかし、(2)のようにしても「2」の背景は白くなりません。 <col>ってそういうものなのでしょうか? <td>または<th>にidをつけてスタイルをかけるしかないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • <COLGROUP>の使い方が理解できません?

    最近なのですが、<COLGROUP>、<col>というものの存在を知りました。 色々調べてみるのですが、飲み込みの悪い私にはいまいち理解することが出来ません。 これは表をグループ化するものなのですよね? 私の理想とマッチしている機能であれば使ってみたいのですが・・・ 例えば横3列、縦10列あった場合、一番左は背景赤、中hは青、右は黄と背景を指定する場合、最初に<COLGROUP>で各グループ化しておけば、<td>や<tr>を構わなくともcssで指定した<COLGROUP>にclassなどで指定を行っておけば、縦10列に一発で指定が反映されるのでしょうか?? すみません、説明すら間々ならない状態なのですが、こんな使い方をする為のものでしょうか?? ただ私の今の設定だと、先ほどの縦10列合った場合、それがclassだった場合は、10個全ての<td>に指定を行わなければならないので、ちょっとおかしいなと思っている次第です。 どなたか、私のお話がご理解いただける方がいらっしゃいましたら、アドバイスいただけたら幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 4カラムのテーブルに絶対幅と相対幅の混在指定の可否

    以下のHTMLで、1列目は20ピクセル(?)、2列目は100ピクセルに幅が固定されているとして、 3~4列目、黄色と青のカラムの幅を均等に揃える方法はありませんか。 3~4列目の幅を<col=50%>ととると、1~2列目の幅が侵食されて崩れます。 ごらんのとおり、テーブル自体の幅は100%なので、モニタやブラウザの表示幅によってテーブル自体の幅も異なってくるため、 4カラムのテーブルのうち、1~2列目は絶対幅、3~4列目と相対幅と混在指定できればよいのですけど。 <html> <body> <table border=1 cellpadding=3 cellspacing=0 width=100%> <col width=20> <col width=100> <col> <col> <tr> <th rowspan=2 style="writing-mode: tb-rl;">基本情報</th> <th>プロジェクト</th> <td colspan=2>あいうえおあいうえおあいうえおあいうえお </tr> <tr> <th>概要</th> <td colspan=2>ああああああああああああああああああああああああああああああああああああああああああああああああああああああああ</td> </tr> <tr> <th colspan=2>コメント</th> <th bgcolor=yellow>当方から</th> <th bgcolor=blue>先方から</th> </tr> <tr> <th colspan=2>第1回会合</th> <td>◆ いいいいいいいいいいい<br>◆ うううううう</td> <td>◆ ええええええええええええええ<br>◆ おおおおおおおおおおおおおおおおおおおおおおおおおおおおお</td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML
  • ASP.Net テーブルのセル内を上揃えにしたい

    大変お世話になっております。 下記のように、テーブルのセルを2列にして、左右のセルにそれぞれ、GridView を配置しております。 こうすると、どちらかにデータが偏って多く表示されると、反対側のセルのGridView がセルの縦方向のセンターに寄ってしまいます。両方のGridView をデータがいくら入ってもそれぞれのセルの縦方向の上揃えにしたいのですが、どのようにすればよろしいでしょうか? 何卒よろしくお願いいたします。     <table align="center" cellspacing="1" class="style2">       <tr>         <td>           <asp:GridView ID="GridView1" runat="server">           </asp:GridView>         </td>         <td>           <asp:GridView ID="GridView2" runat="server">           <asp:GridView>         </td>       </tr>     </table>

  • dwCSで、テーブル内のセルに対するペースト

    質門させて頂きます。宜しくお願い致します。 adobe dreamweaverCS5.5でのテーブルにセルに対してペーストをする時のことです。 ▼対象ソース部分▼ <table width="911" border="0" cellspacing="1" cellpadding="2"> <tr> <td bgcolor="#E6FAFF" class="text3">ドラえもん<br></td> <td bgcolor="#E6FAFF" class="text3">のび太</td> <td bgcolor="#E6FAFF" class="text3">しずかちゃん</td> </tr> </table> 上記のようなテーブルがあって、 セルに入っている「ドラえもん」「のび太」「しずかちゃん」というそれぞれの文字列を 「キテレツ」「コロ助」「みよちゃん」に変更したいと思います。 そこでExcelなどで、3つ横にならんだセル、 例えば「キテレツ」「コロ助」「みよちゃん」といった値の入ったセルをそれぞれ複数選択して、コピーし、dreamweaverのデザインビューで、上記テーブル、セルを選択してペーストすると以下のようになってしまいます。 ▼現状の結果▼ <table width="911" border="0" cellspacing="1" cellpadding="2"> <tr> <td>キテレツ</td> <td>コロ助</td> <td>みよちゃん</td> </tr> </table> これを、以下のように、値だけをペーストしたいのですが、 何か良い方法がございますか? ▼理想の結果▼ <table width="911" border="0" cellspacing="1" cellpadding="2"> <tr> <td bgcolor="#E6FAFF" class="text3">キテレツ</td> <td bgcolor="#E6FAFF" class="text3">コロ助</td> <td bgcolor="#E6FAFF" class="text3">みよちゃん</td> </tr> </table> 要はテーブルのセルに設定した、スタイルを維持した状態で値のみをペーストしたいのです。 お詳しい方いらっしゃいましたら、ご教示のほど何卒宜しくお願い申し上げます。

  • tableの幅をがっちり固定

    <table width="500"> <tr> <td> 長い文字列長い文字列長い文字列長い文字列長い文字列.... </td> ... の場合、widthで500ピクセル幅を指定しているにもかかわらず横幅が500以上に成ってしまいます。 文字列に改行を加えればいいのですが、改行をしない方法で指定した500px内に納めることはできないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • tableのセル高さの固定法

    下記のようなTABLEがあるとします. 右の列は縦3行を連結した1つのセルになっています. また左上の「1」のセルの高さは,50PIXとなっています. いま,右列セルの内容が増えて,table全体の高さが増した場合, 「1」セルはその高さ指定50PIXを無視して拡がってしまいます. このような状況を回避して,右列セルの高さがどうあろうとも 「1」セルの高さを固定する方法を教えて下さい. (例えば,右列セルが高くなった場合,  「1」セルと固定する代わりに「3」セルを拡げて全体の高さを確保する,など) <TABLE border="1"> <TBODY> <TR> <TD HEIGHT="50PIX">1</TD> <TD ROWSPAN=5> ●あ<br> ●あ<br> ●あ </TD> </TR> <TR> <TD>2</TD> </TR> <TR> <TD>3</TD> </TR> </TBODY> </TABLE>

  • テーブルのセル間に余白が空いてしまいます

    2行×2列と3行×2列のテーブルを1つずつ作成し、どちらのテーブルも1列目のセルは結合して画像を挿入し、2列目のセルに文字を入力するというスタイルを取りたいです。 しかし、画像と文字の間(1列目と2列目の間)に余分な空白ができてしまいます。 margin、padding、cellspaceなどが必要ではないかと推測していますが、どこに埋め込むのか、自分なりに試しましたがわかりません。 htmlのコードとcssのコードを記しますので、どなたかお詳しい方お力を貸していただけませんでしょうか? また、もう1点困っていることが、テーブルとテーブルの間にスペース開けたいのですが、<br>はできるだけ使いたくありません。 divにmarginを指定して、テーブルタグの上に<div style="margin-top:10px"></div>とすればスペースは空きましたが、他に方法があれば合わせて教えていただけると嬉しいです。 <!-- htmlのコード --> <body> <table width="700" border="0" > <tr> <td><center> <img src="img/top_image.png" /> </center></td> </tr> <table class="table001"> <tr> <td rowspan="2"><img src="img/aaa.bmp" /></td> <td><h2>このサイトのごあんない</h2></td> </tr> <tr> <td><p>このサイトは~~~~~~</p></td> </tr> </table> <div style="margin-top:10px"></div> <table class="table001"> <tr> <td rowspan="3"><img src="img/bbb.bmp" /></td> <td><h2>このサイトのごあんない2</h2></td> </tr> <tr> <td> <p>このサイトは~~~~~~</p> <p>また、このサイトの~~~~~~。</p> </td> </tr> <tr> <td> <p>問い合わせ</p> <p>電話番号 000-000-0000</p> </td> </tr> </table> </body> /* CSSのコード */ body { background-color:#6C6; margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; padding-bottom: 0px; font-size: 0.8em; font-family: "メイリオ", "Meiryo", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "MS Pゴシック", "MS P Gothic",sans-serif ; } #pageBody { width: 760px ; margin-top: 20px; margin-right: auto; margin-left: auto; background-color: #FFF; } table.table001{ background-color: #E8FECF; width: 700px; margin-left: auto; margin-right: auto; white-space:normal; } h2{ padding-left: 10px; background-color: #009900; width: 180px; color:#FFF; font-size: 1.1em; height: 25px; line-height:25px; }

    • ベストアンサー
    • HTML

専門家に質問してみよう