CSS Counters
CSS counters are set using a variable that increments according to specified rules.
Automatic Numbering with Counters
CSS counters increment variables based on rules.
CSS counters involve the following properties:
counter-reset- Creates or resets a countercounter-increment- Increments a variablecontent- Inserts generated contentcounter()orcounters()function - Adds the counter value to an element
To use CSS counters, you first need to create one with counter-reset:
The following example creates a counter on the page (in the body selector), increments the counter value for each <h2> element, and adds "Section <counter value>:" before each <h2> element.
CSS Example
body {
counter-reset: section;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
Nested Counters
The following example creates a counter on the page, adds the counter value "Section <main counter value>." before each <h1> element, and nested counter values before each <h2> element with the content "<main counter value>.<sub counter value>":
CSS Example
body {
counter-reset: section;
}
h1 {
counter-reset: subsection;
}
h1::before {
counter-increment: section;
content: "Section " counter(section) ". ";
}
h2::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) " ";
}
Counters can also be used in lists, where child elements automatically create nested counters. Here, we use the counters() function to insert strings at different nested levels:
CSS Example
ol {
counter-reset: section;
list-style-type: none;
}
li::before {
counter-increment: section;
content: counters(section,".") " ";
}
CSS Counter Properties
| Property | Description |
|---|---|
| content | Uses ::before and ::after pseudo-elements to insert automatically generated content |
| counter-increment | Increments one or more values |
| counter-reset | Creates or resets one or more counters |