tdタグの最初のレベルのみにスタイルを適用する


136

クラスのスタイルをtdタグの1レベルのみに適用する方法はありますか?

<style>.MyClass td {border: solid 1px red;}</style>

<table class="MyClass">
  <tr>
    <td>
      THIS SHOULD HAVE RED BORDERS
    </td>
    <td>
      THIS SHOULD HAVE RED BORDERS
      <table><tr><td>THIS SHOULD NOT HAVE ANY</td></tr></table>
    </td>
  </tr>
</table>

回答:


221

クラスのスタイルをtdタグの1レベルのみに適用する方法はありますか?

はい*

.MyClass>tbody>tr>td { border: solid 1px red; }

だが!' >'直接子セレクターはIE6では機能しません。そのブラウザーをサポートする必要がある場合(おそらくそうですが)、できることは、内部要素を個別に選択してスタイルを設定解除することだけです。

.MyClass td { border: solid 1px red; }
.MyClass td td { border: none; }

*最初の例tbodyは、HTMLにない要素を参照していることに注意してください。それあなたのHTML に含まれるべきでしたが、ブラウザは通常それを省略しても大丈夫です...彼らは舞台裏でそれを追加するだけです。


1
IE6をデバッグする必要があった世界を思い出すために身震いします。このポストもたらしバック悪寒...
webfish

35

CSS:first-child疑似クラスの使用についてはどうでしょうか。

.MyClass td:first-child { border: solid 1px red; }

16
それはうまくいきません。これtdにより、子ツリーのすべての子が選択され、その子.MyClass要素が最初に含まれているため、innerもスタイル設定されtdます。
Lazlo

1
これはどのようにして多くの賛成票を持っていますか? :first-childOPが求めている効果は絶対にありません。
plong0

8

このスタイル:

table tr td { border: 1px solid red; }
td table tr td { border: none; }

私に与える:

これhttp://img12.imageshack.us/img12/4477/borders.png

ただし、ここではおそらくクラスを使用するのが正しい方法です。


すべての単一のtd要素でクラスを使用することは少し冗長である可能性があり、おそらくそれを含むテーブル要素でクラスを使用し、その後、テーブルの2番目のレベルを除外する必要があります。つまり、最初の例が正しいです。
thomasrutter 2009年

6

MyClass内のテーブルのセレクターを作成するだけです。

.MyClass td {border: solid 1px red;}
.MyClass table td {border: none}

(すべての内部テーブルに一般的に適用するには、次のようにすることもできますtable table td。)


3

テーブルの最初の列の幅を設定したかったのですが(FF7で)これが機能することがわかりました-最初の列の幅は50pxです。

#MyTable>thead>tr>th:first-child { width:50px;}

私のマークアップがあったところ

<table id="MyTable">
 <thead>
  <tr>
   <th scope="col">Col1</th>
   <th scope="col">Col2</th>
  </tr>
 </thead>
 <tbody>
   ...
 </tbody>
</table>

3

うまくいくと思います。

.Myclass tr td:first-child{ }

 or 

.Myclass td:first-child { }

最初tdの行はすべての行の最初の行を選択し、2番目の行tdはページの最初の行のみを選択しますか?
Joshua Pinter、2014

@JoshuaPinterあなたは基本的に最初のものについて正しいです。一般に、(その親が何であるかに関係なく)親の下の最初の要素であるtd:first-child任意のtd要素を選択します。最初のものtr td:first-childは、ものtd下にネストする必要があるという条件を追加しますtr(任意のレベルで、必ずしも直接の子孫である必要はありません)。 直下の最初の要素でtr > td:first-childあるtdを選択しtrます。したがって、最終的に:first-childはOPの質問の解決策とは関係がなく、この答えは正しくありません。
plong0

2

あなたが試すことができると思います

table tr td { color: red; }
table tr td table tr td { color: black; }

または

body table tr td { color: red; }

ここで、 'body'はテーブルの親のセレクターです。

しかし、クラスはおそらくここに行く正しい方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.