CSS - Counters



In CSS, counters act as variables that are used for numbering purposes. They can be increased or decreased by css rules. Css counters enable us to modify the presentation of content depending on its position. For instance you can use the counters to automatically assign numbers to paragraphs, headings and lists.

CSS Counters - Nesting Counters

We can use the counters() function along with the counter-reset and counter-increment properties to create outlined lists with nested counters. This technique allows you to automatically generate counters for different levels of nesting.

This following example creates a nested structure using the <ol> element to demonstrate the nesting of counters.

<html>
<head>
  <title>Nesting of Counter</title>
  <style>
      ol {
         counter-reset: section;
         list-style-type: none;
      }
      li::before {
         counter-increment: section;
         content: counters(section, ".") " ";
      }
</style>
</head>
<body>
   <ol>
      <li>Section 1
      <ol>
        <li>Subsection 1.1</li>
        <li>Subsection 1.2</li>
        <li>Subsection 1.3</li>
      </ol>
    </li>
    <li>Section 2
      <ol>
        <li>Subsection 2.1</li>
        <li>Subsection 2.2</li>
        <li>Subsection 2.3</li>
      </ol>
    </li>
    <li>Section 3
      <ol>
        <li>Subsection 3.1</li>
        <li>Subsection 3.2</li>
        <li>Subsection 3.3</li>
      </ol>
    </li>
  </ol>
</body>
</html>

CSS Counters - Reversed counter

A reversed counter is a special kind of counter that counts backwards instead of forward. To create a reversed counter, name it with the reversed() function when you set it up with counter-reset.

The reversed counters start with a default initial value equal to the number of elements, not zero. This means that it can simply count down from the number of elements to one.

Syntax

counter-reset: reversed(counter name);
The reversed counter property is supported only by Firefox browser

The following example demonstrates reversed counter (Execute this example in Firefox browser).

 
<html>
<head>
<style>
   body {
   counter-reset: reversed(
   section);
   }
   p::before {
   counter-increment: section -1;
   content: "Section " counter(section) ": "; 
   }
</style>
</head>
<body>
   <p>This is fourth paragraph</p>
   <p>This is Third paragraph</p>
   <p>This is second paragraph</p>
   <p>This is first paragraph</p>
</body>
</html>
The name of the counter should not be none, inherit or initial. If this is the case, the declaration is neglected.

CSS Counter - Related Properties

Following is the list of CSS properties of counter:

property value
counter-reset It is used to create or reset a counter.
counter-set It is used to set a counter to given value.
counter-increment It is used to increment the counter value.
counter() It provides a string that represents the current value of named counter.
counters() It is used to work with nested counters.
@counter-styles It is used to create custom counter styles.
contain Determines how the content of an element behaves when it is too wide to fit inside its container.
Advertisements