CSS :not() æ¬ä¼¼ã¯ã©ã¹
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
:not() 㯠CSS ã®æ¬ä¼¼ã¯ã©ã¹ã§ãåæãããã»ã¬ã¯ã¿ã¼ã«ä¸è´ããªãè¦ç´ ã表ãã¾ããç¹å®ã®é
ç®ã鏿ããããã¨ãé²ããããå¦å®æ¬ä¼¼ã¯ã©ã¹ (negation pseudo-class) ã¨å¼ã°ãã¦ãã¾ãã
試ãã¦ã¿ã¾ããã
p:not(.irrelevant) {
font-weight: bold;
}
p > strong,
p > b.important {
color: crimson;
}
p > :not(strong, b.important) {
color: darkmagenta;
}
<p>
<b>ç«æ</b>ã¯ãå°çã«æãããä¼¼ãææã®ã²ã¨ã¤ã§ãã<b>ç«æ</b>ã® 1 æ¥ã¯ãå°çã® 1 æ¥ã¨ã»ã¨ãã©åãã§ãããã <strong>37 å</strong>é·ãã ãã§ãã
</p>
<p class="irrelevant">
<b class="important">NASA</b> ã® Jet <del>Momentum</del> Propulsion Laboratory ã¯ã<b>éæ</b>ã®æ¥µç«¯ãªæ¸©åº¦ã¨å¤§æ°å§ã«èããããã·ã§ã³ã®æ¦å¿µãè¨è¨ãã¦ãã¾ãã
</p>
:not() æ¬ä¼¼ã¯ã©ã¹ã«ã¯ã使ç¨ããåã«ç¥ã£ã¦ãããæ¹ãè¯ãã¯ã»ãã³ããäºæ³å¤ã®çµæãããã¤ãããã¾ãã
æ§æ
:not(<complex-selector-list>) {
/* ... */
}
弿°
:not() æ¬ä¼¼ã¯ã©ã¹ã¯å¼æ°ã¨ãã¦ã 1 ã¤ä»¥ä¸ã®ã»ã¬ã¯ã¿ã¼ãã«ã³ãã§åºåã£ãã»ã¬ã¯ã¿ã¼ãªã¹ããå¿
è¦ã¨ãã¾ãããã®ãªã¹ãã«ã¯æ¬ä¼¼è¦ç´ ãå«ãããã¨ã¯ã§ãã¾ãããããã®ä»ã®åç´ãè¤åãè¤éã»ã¬ã¯ã¿ã¼ã¯å©ç¨ã§ãã¾ãã
解説
:not() ã使ç¨ããéã®ãµã¤ãã§ã¯ãªã广ãçµæãããã¤ãããã¾ãã®ã§ã使ç¨ããéã«ã¯æ°ãä»ãã¦ãã ããã
- ãã®æ¬ä¼¼ã¯ã©ã¹ã使ç¨ãã¦ç¡æå³ãªã»ã¬ã¯ã¿ã¼ãæ¸ããã¨ãã§ãã¾ããä¾ãã°ã
:not(*)ã¯è¦ç´ ã§ã¯ãªããã¹ã¦ã®è¦ç´ ã鏿ããã®ã§ãã«ã¼ã«ã¯é©ç¨ããã¾ããã - ãã®æ¬ä¼¼ã¯ã©ã¹ã¯ã«ã¼ã«ã®è©³ç´°åº¦ãä¸ãããã¨ãã§ãã¾ããä¾ãã°ã
#foo:not(#bar)ã¯åç´ãª#fooã¨åãè¦ç´ ã鏿ãã¾ããã2 ã¤ã®idã»ã¬ã¯ã¿ã¼ã«ããã詳細度ã¯ããé«ããªãã¾ãã - æ¬ä¼¼ã¯ã©ã¹
:not()ã®è©³ç´°åº¦ã¯ãã«ã³ãã§åºåãããã»ã¬ã¯ã¿ã¼ã®å¼æ°ã®ä¸ã§æã詳細ãªã»ã¬ã¯ã¿ã¼ã®è©³ç´°åº¦ã«ç½®ãæãããã¾ãã:not(:is(argument))ã¨æ¸ãããå ´åã¨åã詳細度ãæä¾ãã¾ãã :not(.foo)ã¯.fooã§ã¯ãªããã¹ã¦ã®è¦ç´ ã鏿ããããã<html>ã<body>ã鏿ãã¾ãã- ãã®ã»ã¬ã¯ã¿ã¼ã¯ããX ã§ãªãããã®ãã¹ã¦ã«ä¸è´ãã¾ããããã¯ãåå«çµååã¨ä½¿ç¨ããã¨ã対象ã¨ããè¦ç´ ã鏿ããçµè·¯ãè¤æ°ã§ããã®ã§ãæå¤ãªåããããããããã¾ãããä¾ãã°ã
body :not(table) aã¯<table>å ã®ãªã³ã¯ã«ãé©ç¨ããã¾ãã<tr>ã<tbody>ã<th>ã<td>ã<caption>ãªã©ã¯ãã¹ã¦:not(table)ã®é¨åã«ä¸è´ããããã§ãããããåé¿ããã«ã¯ã代ããã«body a:not(table a)ã使ç¨ããã¨ããã¼ãã«ã®åå«ã§ã¯ãªããªã³ã¯ã®ã¿ã«é©ç¨ããã¾ãã - è¤æ°ã®ã»ã¬ã¯ã¿ã¼ãåæã«å¦å®ãããã¨ãã§ãã¾ããä¾ãã°ã
:not(.foo, .bar)ã¯:not(.foo):not(.bar)ã¨åãã§ãã - ãã
:not()æ¬ä¼¼ã¯ã©ã¹ã«æ¸¡ãããã»ã¬ã¯ã¿ã¼ã®ãããããç¡å¹ã§ãã£ããããã©ã¦ã¶ã¼ã対å¿ãã¦ããªãã£ããããå ´åãã«ã¼ã«å ¨ä½ãç¡å¹ã¨ãªãã¾ãããã®æåãå æããããã«æå¹ãªæ¹æ³ã¯ãå¯å®¹ãªã»ã¬ã¯ã¿ã¼ãªã¹ããåãå ¥ãã:is()æ¬ä¼¼ã¯ã©ã¹ã使ç¨ãããã¨ã§ããä¾ãã°:not(.foo, :invalid-pseudo-class)ã¯ã«ã¼ã«å ¨ä½ãç¡å¹ã«ãã¦ãã¾ãã¾ããã:not(:is(.foo, :invalid-pseudo-class))ã¯.foo以å¤ã®ããããï¼<html>ã<body>ãå«ãï¼è¦ç´ ã«ä¸è´ãã¾ãã
ä¾
>:not() ã¨æå¹ãªã»ã¬ã¯ã¿ã¼ã®ä½¿ç¨
ãã®ä¾ã§ã¯ã :not() ã®ä½¿ç¨ä¾ãããã¤ã示ãã¦ãã¾ãã
HTML
<p>ããã¯æ®µè½ã§ãã</p>
<p class="fancy">ã¨ã¦ãããããï¼</p>
<div>ããã¯æ®µè½ã§ã¯ããã¾ããã</div>
<h2>
<span class="foo">foo ã h2 ã®ä¸ã«ãã</span>
<span class="bar">bar ã h2 ã®ä¸ã«ãã</span>
</h2>
CSS
.fancy {
text-shadow: 2px 2px 3px gold;
}
/* `.fancy` ã¯ã©ã¹ã®ä¸ã«ãªã <p> è¦ç´ */
p:not(.fancy) {
color: green;
}
/* <p> è¦ç´ ã§ã¯ãªãè¦ç´ */
body :not(p) {
text-decoration: underline;
}
/* <div> ã¾ã㯠`.fancy` ã§ã¯ãªãè¦ç´ */
body :not(div):not(.fancy) {
font-weight: bold;
}
/* <div> ã§ã `.fancy` ã§ããªãè¦ç´ */
body :not(div, .fancy) {
text-decoration: overline underline;
}
/* <h2> ã®ä¸ã«ããè¦ç´ ã§ <span> ã« `.foo` ã¯ã©ã¹ã§ãªããã® */
h2 :not(span.foo) {
color: red;
}
çµæ
:not() ã¨ç¡å¹ãªã»ã¬ã¯ã¿ã¼ã®ä½¿ç¨
ãã®ä¾ã§ã¯ãç¡å¹ãªã»ã¬ã¯ã¿ã¼ã§ :not() ã使ç¨ããç¡å¹åã鲿¢ããæ¹æ³ã示ãã¾ãã
HTML
<p class="foo">ãã㯠.foo ã®ä»ããæ®µè½ã§ãã</p>
<p class="bar">ãã㯠.bar ã®ä»ããæ®µè½ã§ãã</p>
<div>ããã¯ã¯ã©ã¹ã®ãªã div ã§ãã</div>
<div class="foo">.foo ã®ä»ãã div ã§ãã</div>
<div class="bar">.bar ã®ä»ãã div ã§ãã</div>
<div class="foo bar">.foo ããã³ .bar ã®ä»ãã div ã§ãã</div>
CSS
/* ç¡å¹ãªã«ã¼ã«ãä½ãããªã */
p:not(.foo, :invalid-pseudo-class) {
color: red;
font-style: italic;
}
/* ãã¹ã¦ã® <p> è¦ç´ ã®ãã¡ `foo` ã¯ã©ã¹ããªããã®ã鏿 */
p:not(:is(.foo, :invalid-pseudo-class)) {
color: green;
border-top: dotted thin currentColor;
}
/* ãã¹ã¦ã® <div> è¦ç´ ã®ãã¡ `foo` ã¾ã㯠`bar` ã¯ã©ã¹ããªããã®ã鏿 */
div:not(.foo, .bar) {
color: red;
font-style: italic;
}
/* ãã¹ã¦ã® <div> è¦ç´ ã®ãã¡ `foo` ã¾ã㯠`bar` ã¯ã©ã¹ããªããã®ã鏿 */
div:not(:is(.foo, .bar)) {
border-bottom: dotted thin currentColor;
}
çµæ
p:not(.foo, :invalid-pseudo-class) ã¨ããã«ã¼ã«ã¯ãç¡å¹ãªã»ã¬ã¯ã¿ã¼ãå«ãã§ãããããç¡å¹ã§ãã:is() æ¬ä¼¼ã¯ã©ã¹ã¯å¯å®¹ãªã»ã¬ã¯ã¿ã¼ãªã¹ããåãå
¥ããã®ã§ã :is(.foo, :invalid-pseudo-class) ã«ã¼ã«ã¯æå¹ã§ã :is(.foo) ã¨åçã«ãªãã¾ãããããã£ã¦ãp:not(:is(.foo, :invalid-pseudo-class)) ã¨ããã«ã¼ã«ã¯ p:not(.foo) ã¨ç価ã§ãããæå¹ã§ãã
ãã :invalid-pseudo-class ãæå¹ãªã»ã¬ã¯ã¿ã¼ã§ãã£ãå ´åããä¸è¨ã®æåã® 2 ã¤ã®ã«ã¼ã«ã¯ç価ã§ãï¼å¾ã® 2 ã¤ã®ã«ã¼ã«ã¯ããã示ãã¦ãã¾ãï¼ã:is() ã使ç¨ãããã¨ã§ããã®ã«ã¼ã«ã¯ããå¼·åºãªãã®ã«ãªãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| Selectors Level 4 > # negation > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
-
é¢é£ãã CSS æ¬ä¼¼ã¯ã©ã¹:
-
How :not() chains multiple selectors - MDN ããã° (2023)