Understanding CSS Specificity: Guide to Style Rule Importance

Hi there πββοΈ, I'm Eleftheria, Community Manager with a coding background and a passion for UX. Do you have any questions? Don't hesitate to contact me. I can talk about front-end development, design, job hunting/freelancing/internships.
Hola, CSS enthusiasts!
Introduction π
Ever wondered why your CSS styles sometimes don't apply as expected? You're about to unravel one of CSS's most enigmatic concepts: Specificity. Think of it as a game of chess where every selector you choose is a move that could change the outcome of how your webpage looks.
Here's what you'll learn in this article:
Understanding Specificity: What it is and why it's crucial for CSS styling.
How Specificity is Calculated: Breaking down the scoring system of selectors.
Practical Examples: Real-world scenarios where specificity comes into play.
Advanced Specificity Situations: Dealing with nested selectors and pseudo-elements.
Managing Specificity: Tips to keep your CSS clean and your layouts predictable.
By the end, you'll be the master of CSS rules.
What is CSS Specificity? π€
Specificity is the weight given to a CSS declaration based on the selector it uses. It's what determines which styles are applied when there are conflicting CSS rules. Think of it as a scoring system where each selector type contributes points, and the rule with the highest score wins.
The Hierarchy of Specificity π
Here's how specificity is calculated:
Inline Styles: These are applied directly to an element via the
styleattribute. They are the most specific, scoring 1,0,0,0.IDs: An ID selector adds 0,1,0,0 to the score. They're very specific but less so than inline styles.
Classes, Attributes, and Pseudo-Classes: Each of these adds 0,0,1,0 to the specificity score. This includes things like
.classname,[attribute],:hover, etc.Elements and Pseudo-Elements: These are the least specific, adding 0,0,0,1. Examples are
div,p,::before, etc.
Examples of Specificity in Action π©βπ»
Inline Style Dominance
<div style="color: red;">Red text, inline style</div>
div {
color: blue;
}
Result: The text will be red. Inline styles trump all other selectors.
ID Overriding Class
<div id="unique" class="common">Am I red or blue?</div>
#unique {
color: red;
}
.common {
color: blue;
}
Result: The text will be red. ID selectors have higher specificity than classes.
Multiple Classes vs. Single Class
<div class="red blue">What color am I?</div>
.red {
color: red;
}
.red.blue {
color: green;
}
Result: The text will be green. Combining selectors increases specificity.
Specificity in Practice π
Combining Selectors: You can combine selectors to increase specificity. For example,
div#id.classwould be more specific than just#idor.class.Importance of Order: When specificity is equal, the last rule defined wins. This is known as the cascade.
!important: As a last resort,
!importantcan override specificity, but it's best to use it sparingly as it can lead to maintenance issues.
Advanced Specificity Situations π€
Nested Selectors
<div id="container">
<p class="text">Nested Specificity</p>
</div>
#container .text {
color: purple;
}
p.text {
color: green;
}
Result: The text will be purple. The nested selector is more specific due to the chain of selectors.
Pseudo-Classes and Attributes
<input type="text" name="user" value="Name">
input[name="user"] {
background: yellow;
}
input[type="text"] {
background: lightblue;
}
Result: The input will have a yellow background because attribute selectors are considered at the same specificity level as classes.
Tips for Managing Specificity π‘
Use Classes: Classes are more maintainable than IDs for styling.
Avoid Over-Specificity: Don't overuse ID selectors for styling. They can make your CSS hard to override when needed.
Understand Inheritance: Some properties are inherited, which can affect how specificity works within nested elements.
Use Specificity to Your Advantage: Know when to increase specificity for important styles, but keep your CSS structure clean.
Conclusion
CSS Specificity dictates which styles will be applied when there's a conflict. By understanding and mastering specificity, you can craft CSS that behaves exactly as you intend, creating efficient and manageable stylesheets. Remember, specificity isn't just about making rules stick; it's about designing with foresight and flexibility.
Happy coding, and may your CSS always be as specific as you need it to be! π
π Hello, I'm Eleftheria, Community Manager, developer, public speaker, and content creator.
π₯° If you liked this article, consider sharing it.




