ä¼å 级
æµè§å¨éè¿ä¼å 级æ¥å¤æåªäºå±æ§å¼ä¸ä¸ä¸ªå ç´ æä¸ºç¸å ³ï¼ä»èå¨è¯¥å ç´ ä¸åºç¨è¿äºå±æ§å¼ãä¼å 级æ¯åºäºä¸åç§ç±»éæ©å¨ç»æçå¹é è§åã
ä¼å 级æ¯å¦ä½è®¡ç®çï¼
ä¼å 级就æ¯åé ç»æå®ç CSS 声æçä¸ä¸ªæéï¼å®ç± å¹é çéæ©å¨ä¸ç æ¯ä¸ç§éæ©å¨ç±»åç æ°å¼ å³å®ã
èå½ä¼å 级ä¸å¤ä¸ª CSS 声æä¸ä»»æä¸ä¸ªå£°æçä¼å 级ç¸ççæ¶åï¼CSS 䏿åçé£ä¸ªå£°æå°ä¼è¢«åºç¨å°å ç´ ä¸ã
å½åä¸ä¸ªå ç´ æå¤ä¸ªå£°æçæ¶åï¼ä¼å 级æä¼ææä¹ãå 为æ¯ä¸ä¸ªç´æ¥ä½ç¨äºå ç´ ç CSS è§åæ»æ¯ä¼æ¥ç®¡/è¦çï¼take overï¼è¯¥å ç´ ä»ç¥å å ç´ ç»§æ¿èæ¥çè§åã
夿³¨ï¼ææ¡£æ ä¸å ç´ çæ¥è¿åº¦å¯¹ä¼å 级没æå½±åã
éæ©å¨ç±»å
ä¸é¢å表ä¸ï¼éæ©å¨ç±»åçä¼å 级æ¯éå¢çï¼
- ç±»åéæ©å¨ï¼ä¾å¦ï¼
h1ï¼å伪å ç´ ï¼ä¾å¦ï¼::beforeï¼ - ç±»éæ©å¨ï¼ä¾å¦ï¼
.exampleï¼ï¼å±æ§éæ©å¨ï¼ä¾å¦ï¼[type="radio"]ï¼å伪类ï¼ä¾å¦ï¼:hoverï¼ - ID éæ©å¨ï¼ä¾å¦ï¼
#exampleï¼ã
éé
éæ©å¨ï¼universal selectorï¼ï¼*ï¼å
³ç³»éæ©å¨ï¼combinatorï¼ï¼+ã>ã~ã" "ã||ï¼å å¦å®ä¼ªç±»ï¼negation pseudo-classï¼ï¼:not()ï¼å¯¹ä¼å
级没æå½±åãï¼ä½æ¯ï¼å¨ :not() å
é¨å£°æçéæ©å¨ä¼å½±åä¼å
级ï¼ã
ä½ å¯ä»¥è®¿é®å±å ä¸ç»§æ¿ä¸çâä¼å 级âæè https://specifishity.com æ¥äºè§£æ´å¤å ³äºä¼å 级ç详ç»ä¿¡æ¯ã
ç»å
ç´ æ·»å çå
èæ ·å¼ï¼ä¾å¦ï¼style="font-weight:bold"ï¼æ»ä¼è¦çå¤é¨æ ·å¼è¡¨ç任使 ·å¼ï¼å æ¤å¯ç使¯å
·ææé«çä¼å
级ã
!important ä¾å¤è§å
å½å¨ä¸ä¸ªæ ·å¼å£°æä¸ä½¿ç¨ä¸ä¸ª !important è§åæ¶ï¼æ¤å£°æå°è¦çä»»ä½å
¶ä»å£°æãè½ç¶ï¼ä»ææ¯ä¸è®²ï¼!important ä¸ä¼å
级æ å
³ï¼ä½å®ä¸æç»çç»æç´æ¥ç¸å
³ãä½¿ç¨ !important æ¯ä¸ä¸ªåä¹ æ¯ï¼åºè¯¥å°½éé¿å
ï¼å 为è¿ç ´åäºæ ·å¼è¡¨ä¸çåºæç级èè§å 使å¾è°è¯æ¾ bug å徿´å å°é¾äºãå½ä¸¤æ¡ç¸äºå²çªç带æ !important è§åç声æè¢«åºç¨å°ç¸åçå
ç´ ä¸æ¶ï¼æ¥ææ´å¤§ä¼å
级ç声æå°ä¼è¢«éç¨ã
ä¸äºç»éªæ³åï¼
- ä¸å®è¦ä¼å
èèä½¿ç¨æ ·å¼è§åçä¼å
级æ¥è§£å³é®é¢è䏿¯
!important - åªæå¨éè¦è¦çå
¨ç«æå¤é¨ CSS çç¹å®é¡µé¢ä¸ä½¿ç¨
!important - æ°¸è¿ä¸è¦å¨ä½ çæä»¶ä¸ä½¿ç¨
!important - æ°¸è¿ä¸è¦å¨å
¨ç«èå´ç CSS 代ç ä¸ä½¿ç¨
!important - ä¸å
¶ä½¿ç¨
!importantï¼ä½ å¯ä»¥ï¼
-
æ´å¥½å°å©ç¨ CSS 级è屿§
-
ä½¿ç¨æ´å ·ä½çè§åãå¨ä½ éæ©çå ç´ ä¹åï¼å¢å ä¸ä¸ªæå¤ä¸ªå ¶ä»å ç´ ï¼ä½¿éæ©å¨å徿´å å ·ä½ï¼å¹¶è·å¾æ´é«çä¼å 级ã
html<div id="test"> <span>Text</span> </div>cssdiv#test span { color: green; } div span { color: blue; } span { color: red; }æ 论 css è¯å¥çé¡ºåºæ¯ä»ä¹æ ·çï¼ææ¬é½ä¼æ¯ç»¿è²çï¼greenï¼ï¼å 为è¿ä¸æ¡è§åæ¯ææé对æ§ãä¼å 级æé«çãï¼åçï¼æ 论è¯å¥é¡ºåºææ ·ï¼èè² blue çè§åé½ä¼è¦ççº¢è² red çè§åï¼
-
对äºï¼2ï¼çä¸ç§ç¹æ®æ åµï¼å½ä½ æ å ¶ä»è¦æå®çå 容æ¶ï¼è¯·å¤å¶ç®åçéæ©å¨ä»¥å¢å ç¹å¼æ§ã
css#myId#myId span { color: yellow; } .myClass.myClass span { color: orange; }
ä»ä¹çæ
åµä¸å¯ä»¥ä½¿ç¨ !importantï¼
A) è¦çå èæ ·å¼
ä½ çç½ç«ä¸æä¸ä¸ªè®¾å®äºå ¨ç«æ ·å¼ç CSS æä»¶ï¼åæ¶ä½ ï¼ææ¯ä½ åäºï¼åäºä¸äºå¾å·®çå èæ ·å¼ã
å ¨å±ç CSS æä»¶ä¼å¨å ¨å±èå´å 设置ç½ç«çå¤è§ï¼èç´æ¥å¨å个å ç´ ä¸å®ä¹çå èæ ·å¼å¯è½ä¼è¦çä½ çå ¨å± CSS æä»¶ãå èæ ·å¼å !important é½è¢«è®¤ä¸ºæ¯é常ä¸å¥½çåæ³ï¼ä½æ¯ææ¶ä½ å¯ä»¥å¨ CSS æä»¶éç¨ !important å»è¦çå èæ ·å¼ã
å¨è¿ç§æ
åµä¸ï¼ä½ å°±å¯ä»¥å¨ä½ å
¨å±ç CSS æä»¶ä¸åä¸äº !important çæ ·å¼æ¥è¦çæé£äºç´æ¥åå¨å
ç´ ä¸çè¡å
æ ·å¼ã
<div class="foo" style="color: red;">What color am I?</div>
.foo[style*="color: red"] {
color: firebrick !important;
}
è®¸å¤ JavaScript æ¡æ¶ååºé½æ·»å äºå
èæ ·å¼ãææ¶åå¯ä»¥ç¨!importantä¸ä¼å
级é«çéæ©å¨ä¸èµ·ä½¿ç¨ï¼ä»¥éåè¦çè¿äºå
èæ ·å¼ã
B) è¦çä¼å 级é«çéæ©å¨
#someElement p {
color: blue;
}
p.awesome {
color: red;
}
å¨å¤å±æ #someElement çæ
åµä¸ï¼ä½ ææ ·è½ä½¿ awesome çæ®µè½åæçº¢è²å¢ï¼è¿ç§æ
åµä¸ï¼å¦æä¸ä½¿ç¨ !importantï¼ç¬¬ä¸æ¡è§åæ°¸è¿æ¯ç¬¬äºæ¡çä¼å
级æ´é«
ææ ·è¦ç !important
A) å¾ç®åï¼åªéåæ·»å 䏿¡ 带 !important ç CSS è§åï¼åç»è¿ä¸ªç»éæ©å¨æ´é«çä¼å
çº§ï¼æ·»å ä¸ä¸ªæ ç¾ï¼ID æç±»ï¼ï¼ææ¯æ·»å 䏿 ·éæ©å¨ï¼æå®çä½ç½®æ¾å¨åæå£°æçåé¢ï¼æ»ä¹ï¼æåå®ä¹ä¸æ¡è§åå¿
èï¼ã
ä¸äºæ¥ææ´é«ä¼å 级çä¾åï¼
table td {
height: 50px !important;
}
.myTable td {
height: 50px !important;
}
#myTable td {
height: 50px !important;
}
B) æè 使ç¨ç¸åçéæ©å¨ï¼ä½æ¯ç½®äºå·²æçæ ·å¼ä¹åï¼
td {
height: 50px !important;
}
C) æå¹²èæ¹å忥çè§åï¼ä»¥é¿å
ä½¿ç¨ !importantã
[id="someElement"] p {
color: blue;
}
p.awesome {
color: red;
}
å° id ä½ä¸ºå±æ§éæ©å¨çä¸é¨åè䏿¯ id éæ©å¨ï¼å°ä½¿å ¶å ·æä¸ç±»ç¸åçç¹å¼æ§ãä¸é¢çä¸¤ä¸ªéæ©å¨ç°å¨å ·æç¸åçæéãå¨ä¼å 级ç¸åæ åµä¸ï¼åé¢å®ä¹ç CSS æ ·å¼ä¼è¢«åºç¨ã
è¥æ³äºè§£æ´å¤ä¿¡æ¯ï¼è¯·åèï¼
- https://stackoverflow.com/questions/3706819/what-are-the-implications-of-using-important-in-css
- https://stackoverflow.com/questions/9245353/what-does-important-in-css-mean
- https://stackoverflow.com/questions/5701149/when-to-use-important-property-in-css
- https://stackoverflow.com/questions/11178673/how-to-override-important
- https://stackoverflow.com/questions/2042497/when-to-use-important-to-save-the-day-when-working-with-css
:is() å :not() ä¾å¤è§å
The matches-any pseudo-class :is()
å®éªæ§
and the negation pseudo-class :not() are not considered a pseudo-class in the specificity calculation. But selectors placed into the pseudo-class count as normal selectors when determining the count of selector types.
:not å¦å®ä¼ªç±»å¨ä¼å
级计ç®ä¸ä¸ä¼è¢«ç使¯ä¼ªç±»ãäºå®ä¸ï¼å¨è®¡ç®éæ©å¨æ°éæ¶è¿æ¯ä¼æå
¶ä¸çéæ©å¨å½åæ®ééæ©å¨è¿è¡è®¡æ°ã
æå¦ä¸ CSS æ ·å¼å£°æï¼
div.outer p {
color: orange;
}
div:not(.outer) p {
color: blueviolet;
}
å°å ¶åºç¨äºä»¥ä¸ç HTML æ¶ï¼
<div class="outer">
<p>This is in the outer div.</p>
<div class="inner">
<p>This text is in the inner div.</p>
</div>
</div>
ä¼å¨å±å¹ä¸åºç°ä»¥ä¸ç»æï¼
:where() ä¾å¤è§å
ä¼å
çº§è°æ´ä¼ªç±» :where() æ»æ¯ä¼å°å
¶ä¼å
çº§æ¿æ¢ä¸ºé¶ï¼0-0-0ï¼ãå®ä½¿ CSS éæ©å¨è½å¤é常å
·ä½å°ç¡®å®ç®æ å
ç´ ï¼èä¸ä¼æåä¼å
级ã
æå¦ä¸ CSS æ ·å¼å£°æï¼
div:where(.outer) p {
color: orange;
}
div p {
color: blueviolet;
}
å°å ¶åºç¨äºä»¥ä¸ç HTML æ¶ï¼
<div class="outer">
<p>This is in the outer div.</p>
<div class="inner">
<p>This text is in the inner div.</p>
</div>
</div>
ä¼å¨å±å¹ä¸åºç°ä»¥ä¸ç»æï¼
åºäºå½¢å¼çä¼å 级ï¼Form-based specificityï¼
ä¼å
级æ¯åºäºéæ©å¨çå½¢å¼è¿è¡è®¡ç®çãå¨ä¸é¢çä¾åä¸ï¼å°½ç®¡éæ©å¨ *[id="foo"] éæ©äºä¸ä¸ª IDï¼ä½æ¯å®è¿æ¯ä½ä¸ºä¸ä¸ªå±æ§éæ©å¨æ¥è®¡ç®èªèº«çä¼å
级ã
æå¦ä¸æ ·å¼å£°æï¼
*#foo {
color: green;
}
*[id="foo"] {
color: purple;
}
å°å ¶åºç¨å¨ä¸é¢ç HTML ä¸ï¼
<p id="foo">I am a sample text.</p>
æç»ä¼åºç°ä¸é¢çææï¼
è½ç¶å¹é äºç¸åçå ç´ ï¼ä½æ¯ ID 鿩卿¥ææ´é«çä¼å 级ãæä»¥ç¬¬ä¸æ¡æ ·å¼å£°æçæã
æ è§ DOM æ ä¸çè·ç¦»
æå¦ä¸æ ·å¼å£°æï¼
body h1 {
color: green;
}
html h1 {
color: purple;
}
å½å®åºç¨å¨ä¸é¢ç HTML æ¶ï¼
<html>
<body>
<h1>Here is a title!</h1>
</body>
</html>
æµè§å¨ä¼å°å®æ¸²ææï¼
ç´æ¥æ·»å æ ·å¼ vs. ç»§æ¿æ ·å¼
ä¸ºç®æ å ç´ ç´æ¥æ·»å æ ·å¼ï¼æ°¸è¿æ¯ç»§æ¿æ ·å¼çä¼å 级é«ï¼æ è§ä¼å 级çéä¼ è§åã
#parent {
color: green;
}
h1 {
color: purple;
}
å½å®åºç¨å¨ä¸é¢ç HTML æ¶ï¼
<html>
<body id="parent">
<h1>Here is a title!</h1>
</body>
</html>
æµè§å¨ä¼å°å®æ¸²ææï¼
å 为 h1 éæ©å¨æç¡®çå®ä½å°äºå
ç´ ï¼ä½ç»¿è²éæ©å¨çä»
ä»
ç»§æ¿èªå
¶ç¶çº§ã
è§è
| Specification |
|---|
| Selectors Level 4 > # specificity-rules > |
åè§
- Specificity Calculator: An interactive website to test and understand your own CSS rules - https://specificity.keegan.st/
- CSS3 éæ©å¨ä¼å 级 - http://www.w3.org/TR/selectors/#specificity
- CSS éè¦æ¦å¿µï¼