2009-02-26 3 views
2

CSSクラス(<テーブルクラス= "x">)が定義されている<テーブルを持っていて、私は<の最初のレベルの 'color'これは関連するクラスにクラスを設定せずにCSSを使用すると可能ですか?< td>?CSS:1レベルだけカスケードする

I.e.

<table class="x"> 
    <tr> 
     <td> 
      xxxx 
      <table><tr><td>yyy</td><tr></table> 
     </td> 
    </tr> 
<table> 

私はxxxxは色を変更したい - 私はしたいときに.x td{color:red;}は現在、XXXXとYYYYに適用される対象とXXXXのではなく、XXXXのTDにクラス名を与えないだろう

+0

特定のブラウザを念頭に置いているのですか、まったく一般的ですか?さまざまなブラウザが異なるレベルの機能をサポートしているため、動作するものと動作しないものに影響します。 – cdeszaq

答えて

8

2つ目のレベルを任意の値に設定してカスケード効果を無効にすることもできます。これにより、最上位レベルのエフェクトをキャンセルすることができます。このような

何か:

table.x tr td { ...} 

table.x tr td table tr td { ... } 

最初の文は.Xテーブルの下にあるすべてのtdのに適用されますが、その後、2番目のステートメントは、内側の入れ子のレベルのためにそれを上書き(およびそれ以下のもの)します。最初のステートメントの後に来るので、上記のステートメントで設定されたものはすべて上書きされます。

これはまた、子どもよりも祖先/子孫のより基本的な構成を使用しているため、IEでも機能しますが、これもサポートされていません。

+2

第2のルールは、第2のルールではなく第1のルールより優先されますが、より具体的であるためです。特異性とカスケードの詳細については、CSSの仕様を確認してください。また、これらのセレクタはそれぞれ 'table.x td {...}'と 'table.x table td {...}'に簡略化できます。 –

+0

@Ben指定子を簡略化することができることに同意します。また、CSSの仕様では、具体性がどのように適用されるかを決定すると言われていますが、IEは必ずしもそれに従うとは限りません。私の経験では、後のものは勝つ可能性が高いです。 – cdeszaq

17

はこれを試してみてください。

table.x > tr > td { ... } 

>は、直接の子セレクタである。

+0

あなたは何か新しいことを毎日学びます - それは一種のクールです... –

+0

私はIEがこれに応答するとは思わない... – Ishmael

+0

IE 7以上をサポートします。 –