CSS jargon explained: the specificity graph

CSS architecture expert Harry Roberts explains how you can plot your project's specificity.

One of ITCSS's fundamental principles is the Specificity
Graph. This is another model that visualises your CSS project's specificity on a simple line graph. Its shape will tell you how well your project meets the low-to-high specificity metric.

The Specificity Graph represents your entire project – all your CSS, once compiled and on the user's machine. Along the X-axis we plot the location of a selector in the CSS (e.g. line 1229), and on the Y-axis we plot the specificity of that selector (e.g. one class).

What we want to see is a graph that trends upwards – a CSS project whose specificity is gradually increasing as we get further into it.

We do not want a very spiky graph, as this shows us we have a lot of higher specificity selectors defined before lower specificity ones – this is how we get into the Specificity Wars.

Whilst it is possible to accurately plot this information, the graph's value is in being a mental model. You can determine the rough shape of your project's Specificity Graph at a glance.

Specifity graph

Best case: In this healthy Specificity Graph, everything trends upwards

Specificity graph

Worst case: A poor Specificity Graph, in which specificities are mixed up drastically

Words: Harry Roberts

Harry Roberts is a consultant frontend architect and CSS architecture expert. Find him on twitter @csswizardry or visit his site csswizardry.com. This article was originally published in net magazine issue 267.

Liked this? Read these!