[9] 引数には単純選択子をちょうど1つだけ指定できます。ただし :not()
自体を入れ子にすることはできません。 >>7
[10] 引数は単純選択子1つであって、単純選択子列ではありません。
[11] 従って、
:not(.hoge.fuga)... は認められていません。
[13] :not()
擬似クラスは他の擬似クラスと違ってそれ自体は特異度の計算に含まれません。
引数として指定された単純選択子は計算に含まれます。
[15] >>14 で :not()
が追加されました。この前の版まで、 :first-child
に対して :not-first-child
など、一部の擬似クラスだけ否定形が別個に定義されていましたが、
:not()
の導入によりそれらは削除されています。
*:not() { }
のように引数がないと、勝手に普遍識別子
*
を補うようです。ですが、
:not() { }
のように単純選択子列の唯一の構成要素が :not()
だと、不正な選択子群として無視するようです。
(前でも後でも、他の単純選択子や擬似要素が指定されていればおk。引数が指定されていれば唯一の単純選択子であってもおk。
:not():not()
はだめですが、
:not(*):not()
や
:not():not(*)
ならおk。)
(名無しさん)
[2]
>>1 無視すると書きましたが、選択子 (や選択子群) の最初の単純選択子が
:not()
の場合は宣言ブロックごと無視され、
選択子の2つ目以降かつ最後の単純選択子列が
:not()
の場合にはその単純選択子列の存在だけが無視され、
選択子の2つ目以降かつ最後でない単純選択子列が
:not()
の場合にはその宣言ブロック全体が無視されます。
(名無しさん)
[3]
選択子仕様書では :not()
は特別な字句
NOT
として定義されています。
(名無しさん)
[4]
>>3 ですが、 Firefox 2 は特別扱いしていないようです。
not(
の部分は FUNCTION
と解釈しているようです。
:/**/not(
):\not(
):n\4f t(
)[5]
>>4 の例は字句的に NOT
ではなく、
FUNCTION
であるとしても (一応)
選択子仕様書の構文に適合しますが、これはそうではありません:
[16] >>4, >>5 は Chrome も Firefox はいずれも :not()
であると解釈します。ただし >>4 の3つ目は Chrome で開くとブラウザが落ちます。
[21] [selectors-4] mention the specificity rules for special pseudo-classes · Issue #2129 · w3c/csswg-drafts () <https://github.com/w3c/csswg-drafts/issues/2129>