:where()
åºçº¿
广æ³å¯ç¨
èª 2021å¹´1æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
:where() CSS ä¼ªç±»å½æ°æ¥åéæ©å¨å表ä½ä¸ºå®çåæ°ï¼å°ä¼éæ©ææè½è¢«è¯¥éæ©å¨å表ä¸ä»»ä½ä¸æ¡è§åéä¸çå
ç´ ã
/* Selects any paragraph inside a header, main
or footer element that is being hovered */
:where(header, main, footer) p:hover {
color: red;
cursor: pointer;
}
/* The above is equivalent to the following */
header p:hover,
main p:hover,
footer p:hover {
color: red;
cursor: pointer;
}
:where() å :is() çä¸åä¹å¤å¨äºï¼:where() çä¼å
çº§æ»æ¯ä¸º 0ï¼ä½æ¯ :is() çä¼å
级æ¯ç±å®çéæ©å¨å表ä¸ä¼å
级æé«çéæ©å¨å³å®çã
è¯æ³
:where(<complex-selector-list>) {
/* ... */
}
å¯å®¹ééæ©å¨è§£æ
è§èå° :is() å :where() å®ä¹ä¸ºæ¥åä¸ä¸ªå¯å®¹ééæ©å¨å表ã
å¨ CSS ä¸ä½¿ç¨éæ©å¨å表æ¶ï¼å¦æä»»ä½éæ©å¨æ æï¼åæ´ä¸ªå表被è§ä¸ºæ æãå½ä½¿ç¨ :is() æ :where() è䏿¯æ´ä¸ªéæ©å¨å表æ¶ï¼å¦ææä¸ªéæ©å¨æ æ³è§£æï¼å被è§ä¸ºæ æï¼ä¸æ£ç¡®æä¸åæ¯æçéæ©å¨å°è¢«å¿½ç¥ï¼å
¶ä»éæ©å¨å°è¢«ä½¿ç¨ã
:is(:valid, :unsupported) {
/* ⦠*/
}
å³ä½¿å¨ä¸æ¯æ :unsupported çæµè§å¨ä¸ï¼ä»å°æ£ç¡®è§£æ :validï¼èï¼
:valid,
:unsupported {
/* ⦠*/
}
å¨ä¸æ¯æ :unsupported æµè§å¨ä¸å³ä½¿å®ä»¬æ¯æ :validï¼ä»å°å¿½ç¥ã
示ä¾
>æ¯è¾ :where() å :is()
该示ä¾å±ç¤ºäº :where() æ¯å¦ä½èµ·ä½ç¨çï¼å¹¶ä¸ä¹éè¿°äº :where() å :is() çåºå«ã
è·éä»¥ä¸ HTMLï¼
<article>
<h2>:is()-styled links</h2>
<section class="is-styling">
<p>
Here is my main content. This
<a href="/proxy/mozilla.org">contains a link</a>.
</p>
</section>
<aside class="is-styling">
<p>
Here is my aside content. This
<a href="/proxy/developer.mozilla.org">also contains a link</a>.
</p>
</aside>
<footer class="is-styling">
<p>
This is my footer, also containing
<a href="/proxy/github.com/mdn">a link</a>.
</p>
</footer>
</article>
<article>
<h2>:where()-styled links</h2>
<section class="where-styling">
<p>
Here is my main content. This
<a href="/proxy/mozilla.org">contains a link</a>.
</p>
</section>
<aside class="where-styling">
<p>
Here is my aside content. This
<a href="/proxy/developer.mozilla.org">also contains a link</a>.
</p>
</aside>
<footer class="where-styling">
<p>
This is my footer, also containing
<a href="/proxy/github.com/mdn">a link</a>.
</p>
</footer>
</article>
å¨è¿ä¸ªæç¹äººä¸ºçä¾åä¸ï¼æä»¬æä¸¤ç¯æç« ï¼æ¯ç¯æç« å å«ä¸ä¸ªæ®µè½ãä¸ä¸ªä¾§è¾¹æ åä¸ä¸ªé¡µèãå®ä»¬ç±äºä½¿ç¨æ è®°åå ç´ çä¸åèä¸åã
为äºä½¿éæ©å®ä»¬å
é¨ç龿¥æ´ç®åï¼ä½ä»ç¶ä¸åï¼æä»¬å¯ä»¥ä½¿ç¨ :is() æ :where()ï¼æ¹å¼å¦ä¸ï¼
html {
font-family: sans-serif;
font-size: 150%;
}
:is(section.is-styling, aside.is-styling, footer.is-styling) a {
color: red;
}
:where(section.where-styling, aside.where-styling, footer.where-styling) a {
color: orange;
}
ç¶èï¼æä»¬ä»¥åæ³ä½¿ç¨ä¸ä¸ªç®åéæ©å¨è¦ç页èç龿¥åºè¯¥æä¹åï¼
footer a {
color: blue;
}
è¿ä¸ªçº¢è²ç龿¥ä¸èµ·ä½ç¨ï¼å 为 :is() ä¸çéæ©å¨ä¼è®¡å
¥æ´ä½éæ©å¨çä¼å
级ï¼å¹¶ä¸ç±»éæ©å¨çä¼å
级é«äºå
ç´ éæ©å¨ã
ç¶èï¼:where() ä¸çéæ©å¨çä¼å
çº§æ¯ 0ï¼æä»¥æ©è²ç页è龿¥å°è¢«æä»¬çç®åéæ©å¨è¦çã
夿³¨ï¼ä½ ä¹å¯ä»¥å¨ GitHub 䏿¾å°è¿ä¸ªç¤ºä¾ï¼åè§ is-whereã
è§è
| è§è |
|---|
| Selectors Level 4> # zero-matches> |