.outerclass {
h3 {
color: blue;
}
p:not(.nested) {
color: green;
}
}
上記のLESSの例では、divクラス「outerclass」内のすべての「p」要素をターゲットにしますが、「。nested」と呼ばれるさらにネストされたdiv内のp要素はターゲットにしたくない。私が試してみました...
p:not(.nested p) // excludes all p elements
そしてまた...
p:not(.nested > p) // excludes all p elements
...無駄に。これは可能ですか、何が欠けていますか?私は真新しいです
それは、CSSセレクター構文ほどの問題ではありません。 p:not(.nested)
は、_.nested
_ classthemselvesなしのすべてのp
要素を言っています、あなたが述べているのは_.nested
_クラスはdiv
が存在するp
にあるため、これが必要です:
_.outerclass {
h3 {
color: blue;
}
:not(.nested) p,
> p {
color: green;
}
}
_
更新:div
を削除し、直接の子p
インスタンスを追加したので、CSS出力は例外を除いて_.outerclass
_のすべてのp
を適切にターゲットにします。
p
要素のCSS出力は
_.outerclass :not(.nested) p,
.outerclass > p {
color: green;
}
_
上記は、直接の子p
要素と、_.outerclass
_要素の子であるものを除く、_.nested
_のネストされたp
要素を対象とします。
問題
BoltClockが指摘している問題は、p
が_.nested
_要素の直接の子であるよりも深くネストされている場合です。 _.nested
_クラス内にあるにもかかわらず、最後のp
要素がまだターゲットになっているこのフィドルを参照してください 。
p
要素が常に_.nested
_の直接の子である場合、問題はありません。または、_.nested
_が常に_.outerclass
_の直接の子であるが、p
がより深くネストされている場合、上記のセレクターを> :not(.nested) p
に変更して、 .outerclass > :not(.nested) p
which _.nested
_ の下のすべてのp
に対して機能します。
問題は、_.nested
_に関連する_.outerclass
_と、_.nested
_内のp
がbothに対して任意の深さである場合です。親。どのCSSセレクターもそれを適切に処理できません。