The counters are not incrementing properly because you're resetting them in their own parent.
For example, the counter section
is being reset (that is, the value is set to 0) every time the browser encounters a h3
tag and so when the counter-increment
is being called within h3:before
(children of h3
), it just increments from 0 to 1 every time.
You should reset the counters at the grand parent level (or at body
if there is no grand parent).
body {
counter-reset: section;
}
h3 {
font-size: .9em;
counter-reset: subsection;
}
h4 {
font-size: .7em;
}
h3:before {
counter-increment: section;
content: counter(section)" ";
}
h4:before {
counter-increment: subsection 2;
content: counter(section)"." counter(subsection)" ";
}
<!-- at body reset section to 0 -->
<h3>
<!-- the h3 will inherit counter section from body (its parent) and increment to 1 in :before -->
<!-- every time a h3 is encountered, the subsection is reset to 0 -->
Favorite Movies
</h3>
<h4>
<!-- this inherits subsection counter from previous sibling and increments value to 2 in :before -->
District 9
</h4>
<h4>
<!-- this inherits subsection counter and its value from previous sibling and increments value to 4 in :before -->
The Matrix
</h4>
<h4>
<!-- this inherits subsection counter and its value from previous sibling and increments value to 6 in :before -->
The Cabin in the Woods
</h4>
<h3>
<!-- the h3 will inherit counter section from body (its parent), its value from the previous sibling and increment to 2 in :before -->
<!-- here the subsection counter is again reset to 0 because the subsection numbering has to restart -->
Others
</h3>
<h4>
<!-- this inherits subsection counter from previous sibling and increments value to 2 in :before -->
Minority Report
</h4>
<h4>
<!-- this inherits subsection counter and its value from previous sibling and increments value to 4 in :before -->
Lord of the Rings
</h4>
<h4>
<!-- this inherits subsection counter and its value from previous sibling and increments value to 6 in :before -->
Fargo
</h4>
h3
sibling ofh4
? – Kimsey