2017-02-06 32 views
1

が存在しない場合にのみ、私は自分のページ上のマークアップの2セットを持っていますdiv.row > tableh1div.rowである場合には、 たとえば、上記のマークアップでは、最初のtableはスタイリングされますが、2番目のスタイルはスタイルされません。スタイル要素なしH1兄弟要素

条件のセットに対してルールを設定する便利な方法が見つかりません。私はSASSには全く新しいので、table要素に特定のクラスを追加する必要はありません。

これを達成するためのヒントがありますか?

+0

'h1'は常に' table'前に直接付属していますか? –

+0

h1がある場合 – BlackHoleGalaxy

答えて

2

あなたはいつもこれが:not()の組み合わせと次の兄弟(+)セレクタを使って、CSSで実現可能である後、隣接h1要素を表示さtableのスタイルを探していたよう。

.row > :not(h1) + table 

ルールは、直接クラス.row持つ要素の直接の子であるh1ない要素が先行任意table要素と一致します。

.row > :not(h1) + table { 
 
    border: 1px solid blue; 
 
    margin-top: 10px; 
 
}
<div class="row"> 
 
    <div>Some random div(s)</div> 
 
    <table> 
 
    <tr> 
 
     <td>This will match the rule</td> 
 
    </tr> 
 
    </table> 
 
</div> 
 
<div class="row"> 
 
    <div>Some random div(s)</div> 
 
    <h1>Table Title</h1> 
 
    <table> 
 
    <tr> 
 
     <td>This will not match the rule</td> 
 
    </tr> 
 
    </table> 
 
</div>

+0

ありがとう、それは期待どおりに仕事をします。 ':not()'セレクタについて考えなかった。 – BlackHoleGalaxy

+0

問題はありませんが、うれしく思います。 –

2

最終的にCSSにコンパイルされ、CSSルールによれば、このようなセレクタはであり、ではありません。スクリプティング(javascript、jQuery)を使用して行う必要があります。これについて多くの質問がありました。これらの参照を確認してください:

Apply CSS styles to an element depending on its child elements

CSS selector for “foo that contains bar”?

Is there a CSS parent selector?

最後に、私たちは親セレクタオプションを持っていないなぜの理由でthis linkをご確認ください。

関連する問題