アプリ版:「スタンプのみでお礼する」機能のリリースについて

特定のテーブルにだけ任意の書式を適用するHTMLかCSS

以下のHTMLテーブルで、入れ子テーブル(区画1~区画4)には罫線なし、
外枠(田の字)だけ、1pxの黒い罫線を引くにはどういうのが効率いいですか?


【解決案1】こうすると、入れ子テーブル(区画1~区画4)まで罫線が現れてしまいます。
table,td,th {border-collapse: collapse; border: 1px solid #000;}

【解決案2】こうすると、該当する全ての<td>タグを<td class="tdstyle">と仕込むのも面倒です。
table {border-collapse: collapse; border: 1px solid #000;}
.tdstyle {border: 1px solid #000;}

【解決案3】外枠(田の字)だけ、以下のようにしたいですが、bordercolorってIEのみ有効なタグですよね?
<table border="1" style="border-collapse: collapse" bordercolor="#111111">


外枠(田の字)だけに、IDをつけたり識別して、効率よく処理できませんか?


<html>
<head>
<style TYPE="text/css">
<!--
-->
</style>
</head>
<body>
  <table cellpadding=10>
    <tr>
      <td>
        <table cellpadding=10><tr><td>区画1</td></tr></table>
      </td>
      <td>
        <table cellpadding=10><tr><td>区画2</td></tr></table>
      </td>
    </tr>
    <tr>
      <td>
        <table cellpadding=10><tr><td>区画3</td></tr></table>
      </td>
      <td>
        <table cellpadding=10><tr><td>区画4</td></tr></table>
      </td>
    </tr>
  </table>
</body>
</html>

A 回答 (4件)

効率だけ考えれば、こうなります。



table{ border-collapse: collapse; }
table, tr, th, td { border-style: none; }
body>table, body>table>tr, body>table>tr>th, body>table>tr>td { border: 1px solid #000; }

ただし、未だ高いシェアを持つIE6を無視することになる…。(IE6は子供セレクタに対応していない)

Browser market share
http://marketshare.hitslink.com/browser-market-s …

で、これに対応するために考えられたのがIE7.jsとかIE9.jsとか。(当然、JavaScript必須)

ie7-js - Project Hosting on Google Code
http://code.google.com/p/ie7-js/

CSSだけで対応したければ、やはり子孫セレクタで子供セレクタを代替するしかないと思います。

IE でも擬似的に子供セレクタ - lucky bag
http://www.lucky-bag.com/archives/2005/06/simula …
    • good
    • 0
この回答へのお礼

think49さん、、ご回答ありがとうございました。
また、御礼遅くなってすみませんでした。

さて本題ですが、#4での解法の例示もさることながら、

> IE6を無視することになる…。(IE6は子供セレクタに対応していない)

など、考え方や参考URL先がとても勉強になりました。
ありがとうございました

お礼日時:2010/06/01 22:59

#3です。



子孫セレクタで子供セレクタを代替する一例を書いておきます。(全角空白は半角空白に置換してください)

--------
<style type="text/css">
<!--
 table { border-collapse: collapse; }

 table, tr, th, td,
 table#Target table,
 table#Target tr tr,
 table#Target th th,
 table#Target td td {
  border-style: none;
 }

 table#Target,
 table#Target tr,
 table#Target th,
 table#Target td {
  border: 1px solid #000;
}
-->
</style>
</head>
<body>
  <table>
    <tr>
      <td>
        <table><tr><td>区画1</td></tr></table>
      </td>
      <td>
        <table><tr><td>区画2</td></tr></table>
      </td>
    </tr>
    <tr>
      <td>
        <table><tr><td>区画3</td></tr></table>
      </td>
      <td>
        <table><tr><td>区画4</td></tr></table>
      </td>
    </tr>
  </table>
</body>
--------
    • good
    • 0

思い出したけど、昔のMacIEの書き方を応用したらどう? って知らないか・・・



table#soto,table#soto td,table#soto th{ border:none;}
table#soto{ background: black;}
table#soto td,table#soto th{ background: white;}
th,td{ padding: 10px;}


<table id="soto" border="1" cellspacing="1">
<tr>
<td><table><tr><td>区画1</td></tr></table></td>
<td><table><tr><td>区画2</td></tr></table></td>
</tr>
<tr>
<td><table><tr><td>区画3</td></tr></table></td>
<td><table><tr><td>区画4</td></tr></table></td>
</tr>
</table>
    • good
    • 0
この回答へのお礼

naokitaさん、ご回答ありがとうございました。
また、御礼遅くなってすみませんでした。

> 昔のMacIEの書き方を応用したらどう? って知らないか・・・


はい、「昔のMacIEの書き方」ってのは知りませんが(^^;、
ご提示いただしたCSSがやろうとしていることは
よく理解できました。

こういう方法もありますね、、、
大変参考になりました。ありがとうございました。

お礼日時:2010/06/01 22:46

ソースそのままならこれで。



table, td, th {border-collapse: collapse; border: 1px solid #000;}
table table, table table td, table table th {border:0;}

テーブルを入れ子にするより別のタグ(divとか)使う方が手っ取り早いですよ

この回答への補足

tenderfeelさん、早速ご回答ありがとうございます。

考え方はよく理解できましたが、本番環境は例示のようなシンプルなものでなく、
複雑なものなので、いちいち設定するのは大変だなあ、と思っていました。

大変参考になるご回答ありがとうざいました。

補足日時:2010/05/25 22:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!