bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths
Learn/CSS/CSS Foundations Practice
CSS•CSS Foundations Practice

CSS Nested Counters

CSS Using Two Counters

You can create multiple counters for different levels of numbering. The following example creates one counter for the page (named "section") and one counter for each <h1> element (named "subsection"):

Example

Formatted code
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) " ";
}

Live preview

The CSS counters() Function

The counters() function returns the current values of the named and nested counters, as a string.

Here we use the counters() function to insert a string between different levels of nested counters:

Example

Formatted code
ol {
  counter-reset: section;
  list-style-type: none;
}
li::before {
  counter-increment: section;
  content: counters(section,".") " ";
}

Live preview

CSS Counter Properties

PropertyDescription
contentUsed with the ::before and ::after pseudo-elements, to insert generated content
counter-incrementIncrements one or more counter values
counter-resetCreates or resets one or more counters
counter()Returns the current value of the named counter
counters()Returns the current values of the named and nested counters

Previous

CSS Fonts

Next

CSS Performance Optimization

This chapter

Overview
6

Lessons

16m

Read time

1. CSS Border Sides2. CSS Fonts3. CSS Nested Counters4. CSS Performance Optimization5. CSS Accessibility Styling6. CSS Website Layout

On this page

CSS Using Two CountersThe CSS counters() FunctionCSS Counter Properties