2012-04-16 10 views
2

子div.exception内のすべてのコンテンツを除いて、div.main内のすべてのテキストを灰色にしたいと思います。 div.exceptionは、mainクラスが親divに追加されなかったかのように見えるはずです。個々の要素からCSS効果を削除する

これは可能ですか?もしそうなら、どうですか?ありがとう!

<style type="text/css"> 
.main{color: gray;} 
.hello{color: red;} 
</style> 
<div class="main"> 
<div> 
    <div class="exception"><p class="hello">Hello</p><a>Link</a></div> 
</div> 
<div><p>Howdy</p></div> 
<div><a>Link</a></div> 
</div> 
+1

を、これは不可能です。親のスタイルを手動で変更する必要があります。 –

答えて

1

いいえ、それはできません。

灰色の着色されていないように見えるように、あなたは簡単にスタイルをオーバーライドすることができますが、その後、あなたは元の色が何であったかを知っている必要があり

.main .exception { color: black; } 

あなたは内側の要素にスタイルを設定したい場合直接inteadメイン要素での、同じレベルで例外クラスを設定し、あなたがinheitを使用して、それをオーバーライドすることができます:カスケードが機能する方法が原因残念ながら

<style type="text/css"> 
.main div { color: gray; } 
.main div.exception { color: inherit; } 
.hello { color: red; } 
</style> 
<div class="main"> 
    <div class="exception"> 
    <div><p class="hello">Hello</p><a>Link</a></div> 
    </div> 
    <div><p>Howdy</p></div> 
    <div><a>Link</a></div> 
</div> 
2

は、これは単にによって行われます:

.main .exception { 
    your styling here (e.g. color: black) 
} 

これはあなたが上記の二つの親を選択する場合にのみ直接の親を、選択としてあなたがcolor: inheritを使用することはできません。このjsFiddle example

を参照してください。したがって、「手動で」色を無効にする必要があります。

@F。 Calderanの答えは、代替ですが、ブラウザのサポートは、現代のブラウザ用の変数

+0

最初にすべての要素をスタイリングする予定です。その後、JSを使用して、親divにクラスmainを追加してすべてをグレーにし、子divにクラス例外を追加して通常にします。このシナリオではこれは機能しますか? Thxs! – user1032531

+0

はい、私はそれに問題はありません – jacktheripper

+0

だから、各要素を2回スタイリングする必要がありますか? 1つは通常の使用のためのもので、2つ目は.exceptionクラスのものです。 http://jsfiddle.net/7zJkh/12/ – user1032531

5

で、ちょうどすべてのdiv要素にルールを適用するが、.exception

.main div:not(.exception) p { 
    /* style for very nested div not exception */ 
} 

(@jacktheripperにより示唆されるように)そうでない場合は、後でルールを上書き

+0

これはうまくいきません。 'exception'の親divはまだそれらのスタイルを取得しています! –

関連する問題