2016-08-08 3 views
0

:not(.foo + .bar)セレクタを使用する方法はありますか?または、別のセレクタを使用して.foo + .barの効果をキャンセルする必要がありますか?他の要素の直後にない要素を選択できますか? :not(.foo + .bar)?

+0

':not'は単純なセレクタしか取らず、それは1つではありません。 –

+1

本当に何をしたいですか? 3つの兄弟要素があり、そのうちの1つのスタイルを変更したいですか?私たちはあなたのhtmlを見ることができますか? –

+0

質問は自明です。 askerは、.foo + .bar以外の.barにマッチすることを望みます。 .foo + .barの意味を理解するためにHTMLが必要な場合は、CSSセレクタに関するいくつかの基礎的な研究を行う必要があります。 – BoltClock

答えて

0

:not(.foo + .bar)は、Selectors 4implementations are on their wayで有効です。

:first-child, :not(.foo) + *, .foo + :not(.bar) 

:あなたは最大3つの複雑なセレクタのリストが必要になりますが、隣接する兄弟の性質のために(同様に子コンビネータ>をして)+をコンビネータ、と言った、セレクタ3と同等であり、しかし、これは.barではない要素を説明する直接的な変換です。おそらく、.fooの直前にない.barに一致させたいと思うだけです。その場合には、それがさらに簡単になります:

.bar:first-child, :not(.foo) + .bar 

そして、あなたが選んで、あなたのニーズに応じて、さらに選択することができます。

  • .fooによって先行されていない場合はすることができます、.barは最初の子になり意味しますちょうど.bar:first-childを使用してください。
  • .barに前の兄弟があることが保証されている場合は、:not(.foo) + .barを使用できます。

両方の可能性を考慮する必要がある場合は、上に示したように両方をリストしても問題ありません。

.foo.barのセレクタは、必ずしも異なる必要はありません。直前にではない.barのいずれかを、別の.barexact same techniqueと一致させることができます。

関連する問題