
- CSS - Home
- CSS - Roadmap
- CSS - Introduction
- CSS - Syntax
- CSS - Inclusion
- CSS - Types
- CSS - Measurement Units
- CSS - Selectors
- CSS - Colors
- CSS - Backgrounds
- CSS - Fonts
- CSS - Text
- CSS - Images
- CSS - Links
- CSS - Tables
- CSS - Borders
- CSS - Border Block
- CSS - Border Inline
- CSS - Margins
- CSS - Lists
- CSS - Padding
- CSS - Cursor
- CSS - Outlines
- CSS - Dimension
- CSS - Scrollbars
- CSS - Inline Block
- CSS - Dropdowns
- CSS - Visibility
- CSS - Overflow
- CSS - Clearfix
- CSS - Float
- CSS - Arrows
- CSS - Resize
- CSS - Quotes
- CSS - Order
- CSS - Position
- CSS - Hyphens
- CSS - Hover
- CSS - Display
- CSS - Focus
- CSS - Zoom
- CSS - Translate
- CSS - Height
- CSS - Hyphenate Character
- CSS - Width
- CSS - Opacity
- CSS - Z-Index
- CSS - Bottom
- CSS - Navbar
- CSS - Overlay
- CSS - Forms
- CSS - Align
- CSS - Icons
- CSS - Image Gallery
- CSS - Comments
- CSS - Loaders
- CSS - Attr Selectors
- CSS - Combinators
- CSS - Root
- CSS - Box Model
- CSS - Counters
- CSS - Clip
- CSS - Writing Mode
- CSS - Unicode-bidi
- CSS - min-content
- CSS - All
- CSS - Inset
- CSS - Isolation
- CSS - Overscroll
- CSS - Justify Items
- CSS - Justify Self
- CSS - Tab Size
- CSS - Pointer Events
- CSS - Place Content
- CSS - Place Items
- CSS - Place Self
- CSS - Max Block Size
- CSS - Min Block Size
- CSS - Mix Blend Mode
- CSS - Max Inline Size
- CSS - Min Inline Size
- CSS - Offset
- CSS - Accent Color
- CSS - User Select
- CSS - Cascading
- CSS - Universal Selectors
- CSS - ID Selectors
- CSS - Group Selectors
- CSS - Class Selectors
- CSS - Child Selectors
- CSS - Element Selectors
- CSS - Descendant Selectors
- CSS - General Sibling Selectors
- CSS - Adjacent Sibling Selectors
- CSS Advanced
- CSS - Grid
- CSS - Grid Layout
- CSS - Flexbox
- CSS - Visibility
- CSS - Positioning
- CSS - Layers
- CSS - Pseudo Classes
- CSS - Pseudo Elements
- CSS - @ Rules
- CSS - Text Effects
- CSS - Paged Media
- CSS - Printing
- CSS - Layouts
- CSS - Validations
- CSS - Image Sprites
- CSS - Important
- CSS - Data Types
- CSS3 Advanced Features
- CSS - Rounded Corner
- CSS - Border Images
- CSS - Multi Background
- CSS - Color
- CSS - Gradients
- CSS - Box Shadow
- CSS - Box Decoration Break
- CSS - Caret Color
- CSS - Text Shadow
- CSS - Text
- CSS - 2d transform
- CSS - 3d transform
- CSS - Transition
- CSS - Animation
- CSS - Multi columns
- CSS - Box Sizing
- CSS - Tooltips
- CSS - Buttons
- CSS - Pagination
- CSS - Variables
- CSS - Media Queries
- CSS - Functions
- CSS - Math Functions
- CSS - Masking
- CSS - Shapes
- CSS - Style Images
- CSS - Specificity
- CSS - Custom Properties
- CSS Responsive
- CSS RWD - Introduction
- CSS RWD - Viewport
- CSS RWD - Grid View
- CSS RWD - Media Queries
- CSS RWD - Images
- CSS RWD - Videos
- CSS RWD - Frameworks
- CSS References
- CSS Interview Questions
- CSS Online Quiz
- CSS Online Test
- CSS Mock Test
- CSS - Quick Guide
- CSS - Cheatsheet
- CSS - Properties References
- CSS - Functions References
- CSS - Color References
- CSS - Web Browser References
- CSS - Web Safe Fonts
- CSS - Units
- CSS - Animation
- CSS Resources
- CSS - Useful Resources
- CSS - Discussion
CSS - Counters
CSS counters act as variables that are used for numbering purposes. They can be increased or decreased by CSS rules. Counters enable us to modify the presentation of content depending on its position. For instance, you can use counters to automatically assign numbers to paragraphs, headings, and lists.
body { counter-reset: section; } /* A simple counter when a new h2 element starts */ h2::before { counter-increment: section; content: "Section " counter(section) ": "; }
CSS counters are a kind of variables maintained by CSS, which can be incremented, decremented, or reset at different points in your document. In this tutorial we will how to implemented and manage counter using CSS.
Table of Contents
- How to Implement Counters in CSS?
- Automatic Numbering With Counters
- Nesting Counters
- Reversed counter
- CSS Counter Related Properties
How to Implement Counters in CSS?
Counters can be used to create numbered lists, sections, or any other content that needs counting. Follow these steps to create counter in a webpage
- Initialize the Counter: To start using a counter, you first need to initialize it using the counter-reset property.
body { counter-reset: section; }
This example initializes a counter named section with an initial value of 0. The counter is reset to 0 every time the body element appears.
li::before { counter-increment: section; }
This example increments the section counter every time an <li> element appears and displays the count before text.
li::before { content: counters(section, ".") " "; }
This example displays the value of the section counter followed by a period and a space before the content of the li element.
Automatic Numbering With Counters
Counters can be used to automatically number elements in a document. The following example demonstrates how to use counters to number list items.
Example
<!DOCTYPE html> <html> <head> <style> body { counter-reset: section; } h2::before { counter-increment: section; content: "Section " counter(section) ": "; } </style> </head> <body> <h1> CSS Counters</h1> <h2>SQL Tutorial</h2> <h2>JavaScript Tutorial</h2> <h2>Python Tutorial</h2> <h2>HTML Tutorial</h2> <h2>CSS Tutorial</h2> </body> </html>
Nesting Counters
Counters can be nested to create more complex numbering schemes. You can use the counters() function to display the value of a nested counter.
Example
<!DOCTYPE html> <html> <head> <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>
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.
body{ counter-reset: reversed(section); }
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.
The reversed counter property is supported only by Firefox browser
Example
Try this in Firefox browser
<!DOCTYPE html> <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>
CSS Counter Related Properties
Following is the list of CSS properties of counter:
Property | Description | Example |
---|---|---|
counter-reset | It is used to create or reset a counter. | |
counter-set | It is used to set a counter to a specific 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. |