2017-03-01 17 views
2

:not()セレクタが次の例で動作するようにするにはどうすればよいですか?CSS:すべての子孫のnot()セレクタ

HTML

<div id="content"> 
    <div id="one"> 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
</div> 
    <div id="two"> 
    <div class="mystyle"><p>This is a <a href="">link</a>.</p></div> <!-- should NOT be green --> 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
</div> 
</div> 

CSS

#content a:not(.mystyle) { 
    color: green; 
} 

JSFIDDLE

Link to jsfiddle

重要

私のブログに外部ウィジェットのスタイルを設定しようとしています。 HTMLへのアクセス権がないので、HTMLを変更することはできません。私はCSSのみのソリューションを探しています。

+1

あなたはここで何をしようとして説明していただけますか? – Soviut

+0

4つのリンクがあります。すべてのリンクは緑色でなければなりません。ただし、class = "mystyle"のリンクは例外です。 –

+0

あなたのフィドルはあなたの質問のコードとはかなり異なっています – j08691

答えて

4

:not()セレクタはa要素に適用されます。これは、.mystyleクラスを持たないaタグのみを選択します。

#content > * > *:not(.mystyle) a { 
    color: green; 
} 

上記は、すべての彼らの降順aタグの緑の色、.mystyleクラスを持っていない任意の子孫ダウン2つのレベルを選択します。そのような

#content > div > div:not(.mystyle) a { 
 
    color: green; 
 
}
<div id="content"> 
 
    <div id="one"> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
</div> 
 
    <div id="two"> 
 
    <div class="mystyle"><p>This is a <a href="">link</a>.</p></div> <!-- should NOT be green --> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
</div> 
 
</div>

1

4つのリンクがあります。すべてのリンクは緑色でなければなりません。ただし、class = "mystyle"のリンクは例外です。

なぜ、:not()を使用していますか?既存のクラスに色を付けるだけです。あなたの例で

* { color: green; } 
 

 
.mystyle * { color: red; }
<div id="content"> 
 
    <div id="one"> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
</div> 
 
    <div id="two"> 
 
    <div class="mystyle"><p>This is a <a href="">link</a>.</p></div> <!-- should NOT be green --> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
</div> 
 
</div>

+1

私が投稿しようとしていた答えのようです。 http://codepen.io/anon/pen/LWGygY?エディタ= 1100 – Bhavik

+0

私は外部ウィジェットのスタイルを設定しようとしています(私はHTMLにアクセスできないので、HTMLを変更することはできません)! –

+0

私の答えはHTMLを変更しません。あなたは 'mystyle'クラスが本当に存在しないと言っていますか? –

0

:以下

は実施例でありますか? :

div:not(.mystyle) > p > a { color: green; }
<div id="content"> 
 
    <div id="one"> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
</div> 
 
    <div id="two"> 
 
    <div class="mystyle"><p>This is a <a href="">link</a>.</p></div> <!-- should NOT be green --> 
 
    <div><p>This is a <a href="">link</a>.</p></div> <!-- should be green --> 
 
</div> 
 
</div>

0

あなたは以下のスニペットで確認することができますこれを行う方法。

div:not(.calc) > p { 
 
    color: green; 
 
}
<div id="content"> 
 
<div><p>Hi</p></div> 
 
<div ><div class="calc"><p>Hi</p></div></div> 
 
<div><p>Hi</p></div> 
 
</div>

関連する問題