Specificity

๐ŸŽจ CSS3+ ๐ŸŸข Chapter 8 of 49 ๐Ÿ“‚ Phase 03: Cascade & Specificity ๐Ÿ“… 2026 Edition
๐Ÿ“Œ 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 TypeWeightExample
Inline style1,0,0,0style="..."
ID0,1,0,0#header
Class, attribute, pseudo-class0,0,1,0.btn, [type], :hover
Element, pseudo-element0,0,0,1p, ::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
  • !important last 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.

OC
Written by Our Compiler Technical Editorial Team
Reviewed for accuracy ยท CSS Complete Roadmap ยท Last updated August 2026