2016-05-17 4 views
1

親クラスに続く親の親クラスだけを対象としたい子クラスを対象にしたいとします。以下のコードでは、.nested-parent要素の.bar-on element要素は、最初の.foo-onのために可視性が示されていますが、2番目の.foo-offクラスのみがこれらの子要素に影響を与えることが必要です。タイプの最後の親に続く子のCSSセレクタ

<style> 
    .foo-on .bar-on {visibility: visible;} 
    .foo-on .bar-off {visibility: hidden;} 
    .foo-off .bar-off {visibility: visible;} 
    .foo-off .bar-on {visibility: hidden;} 
</style> 

<div class="foo-off"> 
    <div class="bar-on">Hidden</div> 
    <div class="bar-off">Visible</div> 
    <div class="foo-on"> 
     <div class="nested-parent"> 
      <div class="bar-on">Visible</div> 
      <div class="bar-off">Hidden</div> 
     </div> 
    </div> 
</div> 

私は一種の直系の子孫セレクタ.foo-on > .bar-onを使用することによってこの問題を解決することができますが、それは彼らが直接されていないので、それはそうネストされた要素(入れ子親クラスの下のもの)は全く影響されない可能子どもは.foo-offです。

私は、特定のクラスの子供のみを選択することができますが、最も近い親だけを選択することができる何らかの複雑なセレクタがありませんか?それともCSSだけではこれができないのでしょうか?

例:https://jsfiddle.net/oyLf6sm1/

+3

あなたの質問を簡略化できますか?理論はここでは複雑です。 –

+1

これを解決する方法がありますが、クラスを追加したり、マークアップを使用するなどして、CSSの親要素を選択する方法はありません。マークアップを変更できない限り、javascriptに頼らざるを得ないかもしれません。 – Chris

+0

一言で言えば、私はオンとオフのクラスがあります。私はそれらのクラスの子供たちが親の親の影響を受けて欲しいです。私の例では、最初のfoo-offクラスは、最も近いfoo-onクラスの影響を受けるだけですら、2番目のfoo-onの子クラスに影響を与えています。 – ryandlf

答えて

0

あなたは「ネストされた、親の内側にネストされたのdivのは、あなたが余分なスタイルを作成する必要があり、そのようにしたい場合はそのような:

.nested-parent .bar-on{ visibility: hidden; } 

それとも、何ができますこのようなもの:

.nested-parent:first-child{ visibility: hidden; } 
+0

残念ながら、いつもそんなに単純ではありません。ネストされた親クラスは、実際には直接子孫セレクタを使用できないことを示すためのものです。時々、子供の授業はより深く埋められます。 – ryandlf

1

試した>セレクタ?これを試して。

.foo-on > .bar-on {visibility: visible;} 
.foo-on > .bar-off {visibility: hidden;} 
.foo-off > .bar-off {visibility: visible;} 
.foo-off > .bar-on {visibility: hidden;} 
+0

これは私が今使っている解決策ですが、親クラスの1つの下にネストされたクラスを持つことはできません。 – ryandlf

+0

このようなhttps://jsfiddle.net/wxoba0tx。? –

+0

残念ながらそれでもまだ動作しません。 hiddenを含む要素はすべて表示されません。 – ryandlf