CSS Specificiteitsrekenmachine Online. Selectorgewicht Visualiseren

Bereken de specificiteit en het exacte gewicht van elk CSS-selector. Een visuele tool om te begrijpen welke CSS-regel de cascade wint en het gebruik van !important te vermijden.

VS
Deze selector wint!
0 ID's
0 Klassen / Pseudo's
0 Elementen
Deze selector wint!
0 ID's
0 Klassen / Pseudo's
0 Elementen
Beide selectors hebben hetzelfde gewicht. Als ze concurreren voor hetzelfde element, wint degene die als laatste in de CSS staat.
Hulpmiddelenstudio

Wil je dit hulpmiddel op je website?

Pas kleuren en de donkere modus aan voor WordPress, Notion of je eigen site.

Veelgestelde vragen

Wat is CSS-specificiteit?

Specificiteit is het algoritme dat browsers gebruiken om te beslissen welke CSS-regel op een element wordt toegepast wanneer meerdere regels concurreren. Het wordt weergegeven als een driekolomsscore (A, B, C) die respectievelijk ID's, klassen/attributen/pseudo-klassen en elementen/pseudo-elementen aangeeft.

Kan een klasse ooit een ID verslaan in specificiteit?

Niet direct. Een ID (1,0,0) verslaat altijd elk aantal klassen (0,N,0) omdat specificiteit geen doorloop heeft tussen kolommen. Honderd klassen (0,100,0) zullen nooit één enkel ID (1,0,0) verslaan.

Wat gebeurt er als twee selectors dezelfde specificiteit hebben?

Wanneer twee selectors exact hetzelfde gewicht hebben, wint degene die het laatst in het CSS-bestand is gedeclareerd. Dit staat bekend als de natuurlijke cascadevolgorde. Deze rekenmachine waarschuwt je visueel wanneer er een gelijkspel optreedt.

Waarom wordt het gebruik van !important als slechte praktijk beschouwd?

De !important-richtlijn doorbreekt de natuurlijke CSS-cascade door een declaratie te forceren boven elke andere regel. Dit leidt tot conflicten die moeilijk te debuggen zijn in grote projecten. Methodologieën zoals BEM pleiten voor het vlak houden van specificiteit om !important nooit nodig te hebben.

# Wat is CSS-specificiteit?

CSS-specificiteit is het algoritme waarmee browsers bepalen welke eigenschapswaarden op een bepaald element worden toegepast. Het is in feite een wiskundig getal dat de browser vertelt hoe "specifiek" een regel is.Als twee regels verschillende specificiteitsniveaus hebben, wint degene met het hoogste gewicht, ongeacht de volgorde waarin ze zijn geschreven. Als beide hetzelfde gewicht hebben, wint de laatste die in de broncode is gedeclareerd.

# CSS-specificiteit berekenen

Specificiteit wordt berekend op basis van drie categorieën die samen een driekolomsgewicht vormen, vaak uitgedrukt als (A, B, C):
  • Kolom A (ID's): Telt het aantal unieke identificatoren. Voorbeeld: #header telt als 1 in kolom A.
  • Kolom B (Klassen, Attributen en Pseudo-klassen): Telt alle klassen (.button), attributen ([type="text"]) en pseudo-klassen (:hover).
  • Kolom C (Elementen en Pseudo-elementen): Telt alle HTML-elementen (div, h1) en pseudo-elementen (::before).

# De gouden regel: geen numerieke doorloop

Een regel met specificiteit (0,50,0) zal nooit specifieker zijn dan een regel (1,0,0). Één enkel ID verslaat oneindig veel klassen. Kolommen lopen nooit in elkaar over.

# Het probleem met !important en BEM-architectuur

De !important-richtlijn is een uitzondering op de specificiteitsregels. Wanneer gebruikt, overschrijft die declaratie automatisch alles. Het wordt als slechte praktijk beschouwd omdat het de natuurlijke cascade vernietigt.Om specificiteitsoorlogen in grote projecten te vermijden, pleiten methodologieën zoals BEM voor het gebruik van uitsluitend één niveau van klasse-selectors, waardoor de specificiteit kunstmatig vlak op (0,1,0) wordt gehouden.

Bibliografische Referenties