0

I have a DOM like this:

<div>
<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>
</div>


<div>
<div>Tiger</div>
<div>Monkey</div>
<div>Fox</div>
</div>

How do I use CSS counter to let it rendered as:

1.A
2.B
3.C
4.D

1.Tiger
2.Monkey
3.Fox

I have tried this:

div > div:before {
  content: counter ("div > div");
}

But it fails.

Code snippet:

div>div:before {
  content: counter("div > div")
}

;
<div>
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
</div>
<div>
  <div>Tiger</div>
  <div>Monkey</div>
  <div>Fox</div>
</div>
mplungjan
  • 169,008
  • 28
  • 173
  • 236
AGamePlayer
  • 7,404
  • 19
  • 62
  • 119

2 Answers2

2

Your use of counter("div>div") was incorrect

If you give the container a class, then you do not need the div>div

.container div::before {
  counter-increment: section; /* Increment the value of section counter by 1 */
  content: counter(section) ". "; /* Display the counter and a dot before the content of each nested div */
}

.container > :first-child {
  counter-reset: section;
}
<div class="container">
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
</div>


<div class="container">
  <div>Tiger</div>
  <div>Monkey</div>
  <div>Fox</div>
</div>
mplungjan
  • 169,008
  • 28
  • 173
  • 236
  • Question: why use `.container div::before` instead of `.container div:before`? – AGamePlayer Feb 06 '23 at 12:22
  • 1
    [pseudo element vs pseudoclass](https://stackoverflow.com/questions/41867664/what-is-the-difference-between-pseudo-classes-and-pseudo-elements) – mplungjan Feb 06 '23 at 13:27
1

Give container divs a class to reset it between lists and initialize counter in css.

.container{
   counter-reset: my-counter;
}

div > div::before {
   counter-increment: my-counter;
   content: counter(my-counter) ". ";
}
<div class="container">
    <div>A</div>
    <div>B</div>
    <div>C</div>
    <div>D</div>
</div>
    
    
<div  class="container">
    <div>Tiger</div>
    <div>Monkey</div>
    <div>Fox</div>
</div>
Max Tuzenko
  • 1,051
  • 6
  • 18