Specification in Css
Specification in Css
❮ PreviousNext ❮
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 are ultimately
applied to an element.
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:
<html>
<head>
<style>
p {color: red;}
</style>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
Try it Yourself »
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:
<html>
<head>
<style>
.test {color: green;}
p {color: red;}
</style>
</head>
<body>
</body>
</html>
Try it Yourself »
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:
<html>
<head>
<style>
#demo {color: blue;}
.test {color: green;}
p {color: red;}
</style>
</head>
<body>
</body>
</html>
Try it Yourself »
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:
<html>
<head>
<style>
#demo {color: blue;}
.test {color: green;}
p {color: red;}
</style>
</head>
<body>
</body>
</html>
Try it Yourself »
Specificity Hierarchy
Every CSS selector has its place in the specificity hierarchy.
There are four categories which define the specificity level of a selector:
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:
p 1 1
p.test 11 1 + 10
.test 10 10
p.test1.test2 21 1 + 10 + 10
The selector with the highest specificity value will win and take effect!
Since the third rule (C) has the highest specificity value (1000), this style declaration will be
applied.
ADVERTISEMENT
ADVERTISEMENT
Example
h1 {background-color: yellow;}
h1 {background-color: red;}
Try it Yourself »
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;}
Try it Yourself »
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>
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;}
Try it Yourself »
The universal selector (*) and inherited values have a specificity of 0 - The universal
selector (*) and inherited values are ignored!