2012-01-09 65 views
7

の子孫ではありません。このドキュメントでは、.todeepクラスの要素内にないイメージを選択するにはどうすればよいですか?下の場合は、2番目と3番目の要素を選択する必要があります。 "todeep"要素の後に画像がどれだけ深くなるか分かりません。CSSセレクタは、

<body> 
    <div class="todeep"> 
     <img> 
    </div> 
    <div> 
     <img> 
     <div> 
      <img> 
      <div class="todeep"> 
       <img> 
       <div> 
        <img /> 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 

私が最初に簡単な解決策を考えた:*:ない(.todeep)IMGが、これもまた、彼らの祖先の間で非「todeep」の要素を持っている画像を選択します。

+0

[負のCSSセレクタ]の可能複製(http://stackoverflow.com/ question/726493/negative-css-selectors) – Neil

答えて

4

すべての画像を選択してから、.todeep親を持つ画像を無効にする必要があります。

ので、代わりの

img { background-color: blue; width: 20px; height: 20px; } 
*:not(.todeep) img { background-color: red; } 

使用

img { background-color: red; width: 20px; height: 20px; } 
.todeep img { background-color: blue; } 

(例のコードは、あなたのjsfiddleから借用)

+0

これは、すべてのレベルの子孫ではなく、 'img'子のみに適用されます。子セレクターを子孫セレクターに置き換えます。 – BoltClock

+0

@BoltClock:あなたは正しい、固定されています。 – Bergi