Specificity
๐ Covered in this chapter:
Element ยท Class ยท ID ยท Inline ยท Specificity Calculation ยท Selector Weight ยท Specificity Wars ยท CSS Architecture ยท :where() ยท :is() ยท !important Problems ยท Refactoring
Welcome to Chapter 8: Specificity โ part of the CSS Complete Roadmap. This lesson covers all subtopics with clear explanations, code examples, and best practices used in professional web development.
1Specificity Ante Enti?
Specificity โ selector strength score. Cascade lo specificity equal unna rules madhya source order decide chestundi; different specificity ayite higher score win avuthundi.
| Selector Type | Weight | Example |
|---|---|---|
| Inline style | 1,0,0,0 | style="..." |
| ID | 0,1,0,0 | #header |
| Class, attribute, pseudo-class | 0,0,1,0 | .btn, [type], :hover |
| Element, pseudo-element | 0,0,0,1 | p, ::before |
2Specificity Calculation
CSS โ Specificity Examples
/* (0,0,0,1) โ one element */
p { color: black; }
/* (0,0,1,0) โ one class */
.text { color: blue; }
/* (0,1,0,0) โ one ID */
#main { color: red; }
/* (0,1,1,1) โ ID + class + element */
#main .title h1 { color: purple; }
Compare left to right: First different column lo ekkuva number unna selector win avuthundi. #main p (0,1,0,1) beats .text (0,0,1,0).
3Avoiding Specificity Wars
Specificity wars โ override cheyadaniki malli malli IDs and !important add cheyadam. Maintainability destroy avuthundi.
- Classes prefer cheyandi over IDs for styling
- Single-class selectors target cheyandi:
.nav-link--active - BEM naming โ predictable, flat specificity
!importantlast resort matrame
4:where() & :is() โ Specificity Control
/* :where() โ zero specificity boost */
:where(h1, h2, h3) {
line-height: 1.2;
}
/* :is() โ takes highest specificity of arguments */
:is(h1, .title, #hero) {
color: #1e293b;
}
:where() reset/base styles ki perfect โ override cheyadam easy. :is() grouping ki use cheyandi but specificity aware ga.
5Refactoring Complex Selectors
Before โ After Refactor
nav.main-nav > ul > li.active > a โ .nav-link--active
Lower specificity, reusable class, easier testing and maintenance.