--- title: ':not()' slug: 'Web/CSS/:not' tags: - ':not()' - CSS - Layout - Negation - Pseudo-class - Reference - Selector - Web translation_of: 'Web/CSS/:not' ---
:not() は CSS の擬似クラスで、列挙されたセレクターに一致しない要素を表します。特定の項目が選択されることを防ぐため、否定擬似クラス (negation pseudo-class) と呼ばれています。
/* 段落以外の要素を選択 */
:not(p) {
color: blue;
}
:not() 擬似クラスには、使用する前に知っておいた方が良いクセやコツ、予想外の結果がいくつかあります。
:not() 擬似クラスは引数として、1つまたは複数のセレクターをカンマで区切ったものを要求します。リストには否定セレクターや擬似要素を含めることはできません。
複数のセレクターを指定することは実験的な機能で、広くは対応されていません。
:not() を使用する際のふつうではない効果や結果がいくつかありますので、使用する際には気を付けてください。
:not 擬似クラスは入れ子にすることができません。すなわち :not(:not(...)) は無効です。:not() で有効な引数にはなりません。従って、 :not(p::before) のようなセレクターは動作しません。:not(*) は要素ではないすべての要素を選択するので、規則は適用されません。#foo:not(#bar) は単純な #foo と同じ要素を選択しますが、詳細度はより高くなります。:not(.foo) は .foo ではないすべての要素を選択するため、{{HTMLElement("html")}} や {{HTMLElement("body")}} も選択します。body :not(table) a はテーブル内のリンクにも適用されます。 {{HTMLElement("tr")}} がセレクターの :not() の部分に該当するからです。<p>I am a paragraph.</p> <p class="fancy">I am so very fancy!</p> <div>I am NOT a paragraph.</div>
.fancy {
text-shadow: 2px 2px 3px gold;
}
/* '.fancy' クラスの中にない <p> 要素 */
p:not(.fancy) {
color: green;
}
/* <p> 要素ではない要素 */
body :not(p) {
text-decoration: underline;
}
/* <div> または <span> 要素ではない要素 */
body :not(div):not(span) {
font-weight: bold;
}
/* '.crazy' または '.fancy' ではない要素 */
/* なお、この文法は十分に対応されていません。 */
body :not(.crazy, .fancy) {
font-family: sans-serif;
}
{{EmbedLiveSample('Examples')}}
| 仕様書 | 状態 | 備考 |
|---|---|---|
| {{SpecName('CSS4 Selectors', '#negation', ':not()')}} | {{Spec2('CSS4 Selectors')}} | 引数で単純セレクター以外も許容数量に拡張。 |
| {{SpecName('CSS3 Selectors', '#negation', ':not()')}} | {{Spec2('CSS3 Selectors')}} | 初回定義 |
{{Compat("css.selectors.not")}}