not

:not() 擬似クラス

[6] :not() 擬似クラス否定を表します。

仕様書

意味

[8] :not() は引数によって表されない要素を表します >>7

引数

[9] 引数には単純選択子をちょうど1つだけ指定できます。ただし :not() 自体を入れ子にすることはできません。 >>7

[10] 引数は単純選択子1つであって、単純選択子列ではありません。

[11] 従って、

:not(.hoge.fuga)
... は認められていません。

[12] また、単純選択子列の場合とは異なり、暗黙の普遍選択子は存在しません。 従って普遍選択子に対する既定名前空間の適用の影響も、もちろんありません。例えば

@namespace 'http://hoge/';
*|*:not(.foo)
... は http://hoge/ のすべての class属性foo要素以外ではなくすべての名前空間のすべての class属性foo要素以外を表しています。

特異度

[13] :not() 擬似クラスは他の擬似クラスと違ってそれ自体は特異度の計算に含まれません。 引数として指定された単純選択子は計算に含まれます。

歴史

選択子3

[15] >>14:not() が追加されました。この前の版まで、 :first-child に対して :not-first-child など、一部の擬似クラスだけ否定形が別個に定義されていましたが、 :not() の導入によりそれらは削除されています。

実装

[1] Firefox 2 は

*: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 と解釈しているようです。

[5] >>4 の例は字句的に NOT ではなく、 FUNCTION であるとしても (一応) 選択子仕様書の構文に適合しますが、これはそうではありません:

[16] >>4, >>5ChromeFirefox はいずれも :not() であると解釈します。ただし >>4 の3つ目は Chrome で開くとブラウザが落ちます。

[17] not( の間に注釈を入れるのは仕様上も FirefoxChrome非妥当扱いです。

メモ

[19] Safari 9.0 ( 版) <https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW34>

The following CSS4 selectors are now fully supported by Safari.

:not

[20] microformats2 parsing specification · Microformats Wiki () <http://microformats.org/wiki/microformats2-parsing>

:not[.h-*] is not a valid CSS selector but is used here to mean:

does not have any class names that start with "h-"

[21] [selectors-4] mention the specificity rules for special pseudo-classes · Issue #2129 · w3c/csswg-drafts () <https://github.com/w3c/csswg-drafts/issues/2129>