Re: Counter-reset on pseudo class creates new counter-scope

On 1/4/10 12:20 PM, divya manian wrote:
> The nested element seems to create another counter named section which
> has scope for only nth-child pseudo-class (even though they are only
> resetting the counter named section). While this seems consistent with
> the Candidate Recommendation [2], each browser seems to interpret this
> differently. Chrome/Safari/Opera (latest versions) resets that counter
> to 1. Firefox resets that to the last number before the counter is
> reset.

I'm not sure what you mean here...  In this testcase, there are counters 
named "section" scoped to each <ol> and another counter named "section" 
scoped to the "horse" <li> and all its following sibling and their 
descendants.

Creating that last counter doesn't affect the values of any other 
counters around; in particular, the outermost "section" counter (the one 
attached to the outermost <ol>) remains at the value 3.

The Webkit behavior of resetting that counter to the value 1 is 
incorrect per the current spec text; note, however, that the spec here 
changed at some point in the last few years.  It may be that Webkit 
implements an earlier version.

I don't know where you got your Opera result from.  Opera 10 shows the 
same thing as Gecko over here.

> The counter-reset set on classes/pseudo-classes is creating a new
> scope even though they are overriding the counter-increment specified
> on the same element.

That's what the spec requires, yes.  In particular this part:

   "resetting a counter in a descendant element or pseudo-element
    automatically creates a new instance of the counter."

In this case, resetting the counter on the <li> (the pseudo-class 
doesn't matter except insofar as it resets the counter on a particular 
<li>) creates a new instance of the counter, since the in-scope instance 
at that point is on the parent of the <li>.

-Boris

Received on Monday, 4 January 2010 19:14:20 UTC