A JavaScript module for calculating and comparing the specificity of CSS selectors. The module is used on the Specificity Calculator website.
Note that version 1 is a complete re-write with support for CSS Selectors Level 4, and has a different API than earlier versions.
selector:string- should be a valid CSS selector
A Specificity object with a type of Record<"A" | "B" | "C", number>.
calculate("#id");
{
A: 1,
B: 0,
C: 0
}
calculate(".classname");
{
A: 0,
B: 1,
C: 0
}
calculate("element");
{
A: 0,
B: 0,
C: 1
}
calculate('ul#nav li.active a');
{
A: 1,
B: 1,
C: 3
}a:Specificityobject with a type ofRecord<"A" | "B" | "C", number>b:Specificityobject with a type ofRecord<"A" | "B" | "C", number>
Returns a positive number if a has a higher specificity than b
Returns a negative number if a has a lower specificity than b
Returns 0 if a has the same specificity than b
[
"element",
".classname",
"#id",
]
.map(calculate)
.sort(compare);
[ { A: 0, B: 0, C: 1 }, { A: 0, B: 1, C: 0 }, { A: 1, B: 0, C: 0 } ]Same as compare but returns the opposite value, for use in sorting specificity objects with the highest specificity first.