首页 > 其他分享 >css43 CSS Specificity

css43 CSS Specificity

时间:2024-06-01 17:55:15浏览次数:14  
标签:color specificity selector background Specificity element Example CSS css43

https://zhuanlan.zhihu.com/p/670589063

CSS Specificity(CSS 特异性)是一个用来决定当多个CSS规则应用于同一个元素时,哪个规则将优先应用的机制。

 

What is Specificity?

If there are two or more CSS rules that point to the same element, the selector with the highest specificity value will "win", and its style declaration will be applied to that HTML element.

Think of specificity as a score/rank that determines which style declaration is ultimately applied to an element.

Look at the following examples:

Example 1

In this example, we have used the "p" element as selector, and specified a red color for this element. The text will be red:

<!DOCTYPE html>
<html>
<head>
<style>
p {color: red;} 
</style>
</head>
<body>

<p>Hello World!</p>

</body>
</html>

 

Now, look at example 2:

Example 2

In this example, we have added a class selector (named "test"), and specified a green color for this class. The text will now be green (even though we have specified a red color for the element selector "p"). This is because the class selector is given higher priority:

<!DOCTYPE html>
<html>
<head>
<style>
.test {color: green;} 
p {color: red;} 
</style>
</head>
<body>

<p class="test">Hello World!</p>

</body>
</html>

 

 

 

Now, look at example 3:

Example 3

In this example, we have added the id selector (named "demo"). The text will now be blue, because the id selector is given higher priority:

<!DOCTYPE html>
<html>
<head>
<style>
#demo {color: blue;}
.test {color: green;} 
p {color: red;} 
</style>
</head>
<body>

<p id="demo" class="test">Hello World!</p>

</body>
</html>

 


 

Now, look at example 4:

Example 4

In this example, we have added an inline style for the "p" element. The text will now be pink, because the inline style is given the highest priority:

<!DOCTYPE html>
<html>
<head>
<style>
#demo {color: blue;}
.test {color: green;} 
p {color: red;} 
</style>
</head>
<body>

<p id="demo" class="test" style="color: pink;">Hello World!</p>

</body>
</html>

 


 


Specificity Hierarchy

Every CSS selector has its place in the specificity hierarchy.

There are four categories which define the specificity level of a selector:

  1. Inline styles - Example: <h1 style="color: pink;">
  2. IDs - Example: #navbar
  3. Classes, pseudo-classes, attribute selectors - Example: .test, :hover, [href]
  4. Elements and pseudo-elements - Example: h1, ::before

How to Calculate Specificity?

Memorize how to calculate specificity!

Start at 0, add 100 for each ID value, add 10 for each class value (or pseudo-class or attribute selector), add 1 for each element selector or pseudo-element.

Note: Inline style gets a specificity value of 1000, and is always given the highest priority!

Note 2: There is one exception to this rule: if you use the !important rule, it will even override inline styles!

The table below shows some examples on how to calculate specificity values:

SelectorSpecificity ValueCalculation
p 1 1
p.test 11 1 + 10
p#demo 101 1 + 100
<p style="color: pink;"> 1000 1000
#demo 100 100
.test 10 10
p.test1.test2 21 1 + 10 + 10
#navbar p#demo 201 100 + 1 + 100
* 0 0 (the universal selector is ignored)

The selector with the highest specificity value will win and take effect!

Consider these three code fragments:

Example

A: h1
B: h1#content
C: <h1 id="content" style="color: pink;">Heading</h1>

The specificity of A is 1 (one element selector)
The specificity of B is 101 (one ID reference + one element selector)
The specificity of C is 1000 (inline styling)

Since the third rule (C) has the highest specificity value (1000), this style declaration will be applied.



More Specificity Rules Examples

Equal specificity: the latest rule wins - If the same rule is written twice into the external style sheet, then the latest rule wins:

Example

h1 {background-color: yellow;}
h1 {background-color: red;}

 

<!DOCTYPE html>
<html>
<head>
<style>
h1 {background-color: yellow;}
h1 {background-color: red;}
</style>
</head>
<body>

<h1>This is heading 1</h1>

</body>
</html>

 


ID selectors have a higher specificity than attribute selectors - Look at the following three code lines:

Example

div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}
<!DOCTYPE html>
<html>
<head>
<style>
div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}
</style>
</head>
<body>

<div id="a">This is a div</div>

</body>
</html>

 

the first rule is more specific than the other two, and will therefore be applied.


Contextual selectors are more specific than a single element selector - The embedded style sheet is closer to the element to be styled. So in the following situation

Example

/*From external CSS file:*/
#content h1 {background-color: red;}

/*In HTML file:*/
<style>
#content h1 {background-color: yellow;}
</style>

the latter rule will be applied.


A class selector beats any number of element selectors - a class selector such as .intro beats h1, p, div, etc:

Example

.intro {background-color: yellow;}
h1 {background-color: red;}
<!DOCTYPE html>
<html>
<head>
<style>
.intro {background-color: yellow;}
h1 {background-color: red;}
</style>
</head>
<body>

<h1 class="intro">This is a heading</h1>

</body>
</html>

 


The universal selector (*) and inherited values have a specificity of 0 - The universal selector (*) and inherited values are ignored!

 

标签:color,specificity,selector,background,Specificity,element,Example,CSS,css43
From: https://www.cnblogs.com/emanlee/p/18226215

相关文章

  • css44 CSS The !important Rule
    https://www.w3schools.com/css/css_important.asp Whatis!important?The!importantruleinCSSisusedtoaddmoreimportancetoaproperty/valuethannormal.Infact,ifyouusethe!importantrule,itwilloverrideALLpreviousstylingrulesforthat......
  • css42 CSS Units
    https://www.w3schools.com/css/css_units.asp CSSUnitsCSShasseveraldifferentunitsforexpressingalength.ManyCSSpropertiestake"length"values,suchaswidth,margin,padding,font-size,etc.Lengthisanumberfollowedbyalengthun......
  • CSS(4)(学习笔记)
    一、定位1.1为什么需要定位有些效果,标准流或浮动都无法快速实现,此时需要定位来实现。(浮动不会压住文字和图片,浮动指挥影响后面的盒子不会影响前面的盒子)比如:所以:1.浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子。2.定位则是可以让盒子自由的在某个盒......
  • css41 CSS Website Layout
    https://www.w3schools.com/css/css_website_layout.asp WebsiteLayoutAwebsiteisoftendividedintoheaders,menus,contentandafooter: Therearetonsofdifferentlayoutdesignstochoosefrom.However,thestructureabove,isoneofthemostcomm......
  • css39 CSS Forms
    https://www.w3schools.com/css/css_form.aspThelookofanHTMLformcanbegreatlyimprovedwithCSS:<!DOCTYPEhtml><html><style>input[type=text],select{width:100%;padding:12px20px;margin:8px0;display:inline-blo......
  • css40 CSS Counters
    https://www.w3schools.com/css/css_counters.asp CSScountersare"variables"maintainedbyCSSwhosevaluescanbeincrementedbyCSSrules(totrackhowmanytimestheyareused).Countersletyouadjusttheappearanceofcontentbasedonits......
  • css38 CSS Image Sprites
    https://www.w3schools.com/css/css_image_sprites.asp ImageSpritesAnimagespriteisacollectionofimagesputintoasingleimage.Awebpagewithmanyimagescantakealongtimetoloadandgeneratesmultipleserverrequests.Usingimagespriteswi......
  • css36 CSS Dropdowns
    https://www.w3schools.com/css/css_dropdowns.aspCSSDropdowns  CreateahoverabledropdownwithCSS.Demo:DropdownExamplesMovethemouseovertheexamplesbelow:   BasicDropdownCreateadropdownboxthatappearswhentheusermovesthem......
  • css37 CSS Image Gallery
    https://www.w3schools.com/css/css_image_gallery.asp CSScanbeusedtocreateanimagegallery. ImageGalleryThefollowingimagegalleryiscreatedwithCSS:<!DOCTYPEhtml><html><head><style>div.gallery{margin:5px;......
  • css35 CSS Navigation Bar
    https://www.w3schools.com/css/css_navbar.aspDemo:NavigationBars NavigationBarsHavingeasy-to-usenavigationisimportantforanywebsite.WithCSSyoucantransformboringHTMLmenusintogood-lookingnavigationbars.NavigationBar=ListofLi......