- From: L. David Baron <dbaron@dbaron.org>
- Date: Thu, 16 Aug 2012 12:06:56 -0700
- To: Elliott Sprehn <esprehn@gmail.com>
- Cc: www-style list <www-style@w3.org>
On Thursday 2012-08-16 11:49 -0700, Elliott Sprehn wrote: > I'm trying to fix and clean up the counter implementation in WebKit > and came across some confusion in the spec: > > http://www.w3.org/TR/CSS21/generate.html#scope > """ > If 'counter-increment' or 'content' on an element or pseudo-element > refers to a counter that is not in the scope of any 'counter-reset', > implementations should behave as though a 'counter-reset' had reset > the counter to 0 on that element or pseudo-element. > """ > > To me this reads that every counter-increment or content: counter(x); > when there's no scope should reset to 0 so given this example > http://jsfiddle.net/mLUyP/ you should output all (1)'s since there's > no counter-reset in the document. Instead WebKit and Gecko output > (1)(2)(3) twice like the first counter-increment implies a > counter-reset to 0 *and* establishes a new scope. This is because a scope includes not just descendants but also all later siblings and their descendants, at least up to (but not including) a later sibling that also resets the same counter. > Opera's behavior here is totally different: > http://test.csswg.org/suites/css2.1/20110323/html4/counters-scope-implied-002.htm > > Is there a reason for the implied scopes? Why not just reset every > counter to 0 at the document root? I think the reason to avoid a reset to zero on the root is to avoid creepy action-at-a-distance. In particular, if something is using the counters() function (i.e., to produce output like "1.2" rather than just "2"), then in a document like this (using elements with silly names to imply what properties they have): <div> <reset-counter> <!-- without the second increment-and-use-counter this is "1". But if the element below creates an implicit reset on the root element then this becomes "1.1" -- which is also very strange in terms of incremental loading --> <increment-and-use-counter /> </reset-counter> </div> <increment-and-use-counter /> -David -- 𝄞 L. David Baron http://dbaron.org/ 𝄂 𝄢 Mozilla http://www.mozilla.org/ 𝄂
Received on Thursday, 16 August 2012 19:07:20 UTC