← #93 Shorten import paths in TypeScript

Append leading zeros to ordered list items

Topics: CSS

Setting the list-style-type property to the below value will append zero number to items of an ordered list (ol):

ol {
list-style-type: decimal-leading-zero;

However, it only has effect with the items whose indices are less than 10. It means that if our list has more than 100 items, then they will be prefixed as following:

01. Item
02. Item
09. Item
10. Item
99. Item
100. Item

In order to fix that issue, we can use the CSS counter. Each item holds the current value of the counter which is incremented by one in the next item:

ol {
counter-reset: items;
list-style-type: none;
li {
counter-increment: items;

To prefix an item with its associate counter value, the ::before pseudo element comes to the rescue.

li:before {
content: "00" counter(items)". ";
li:nth-child(n+10)::before {
content: "0" counter(items)". ";
li:nth-child(n+100)::before {
content: counter(items)". ";

The :nth-child(n+10) selector indicates the items whose indices are greater or equal to 10. It will override the styles applied for li::before elements.
In the same way, :nth-child(n+100) overrides the styles of :nth-child(n+10).


Fix a typo or suggest an improvement
#95 Always use "noopener" or "noreferrer" for links opened in new tabs