Automatic Numbering with CSS Counter

We have covered a lot of cool CSS3 capabilities – from Color Gradients, Transtions, and Animation. Actually, there are also several properties in CSS2 that is really useful but is less-known, including one we are going to discuss in this post: CSS Counter.

As you may already knew, when we add lists with the <ol> element, the list is numbered automatically. By using CSS Counter, we can even number any element. So, let’s see how it is done.

Basic Usage

CSS Counter consists of two main properties: counter-reset and counter-increment. The counter-reset is used to reset the count, while the counter-increment – coupled with pseudo-element – is used to add the numbers.

The following code is a basic example of how we number a <h1> element with these properties.

 body {
 counter-reset: number;
 }
 h1:before {
 counter-increment: number;
 content: "counter(number) ";
 }
 

This code gives us the following result.

simple numbering

In case you want the number to start from specific point, you can specify the “reset number” this way.

 body {
 counter-reset: number 1;
 }
 

This number that we added in the above code is the “reset number”. If it is not declared explicitly it will be set at 0 as the default, and the count will initialize from 1. In other words, the generated number will initialize from the next number of the one in the counter-reset property. So, given our example above, the count will start from 2.

reset start

Furthermore, you can also change the type of the number, which is specified within the content property.

 h2:before {
 counter-increment: first;
 content: counter(number, upper-roman) ". ";
 }
 

The result will turn out as follows.

roman number

Final Thought

This property might only be useful for a particular type of website, and it is likely that you will not use it every day. But, we hope that this post could be good reference for when you need it. And if you have any questions regarding the subject, feel free to post the question in the comment box below.

WebsiteFacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail