W3C home > Mailing lists > Public > www-style@w3.org > July 2008

Re: setting counter values without opening a scope..

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Thu, 24 Jul 2008 14:37:57 -0500
Message-ID: <dd0fbad0807241237u12b09b60p8eb79f4bf4f2595b@mail.gmail.com>
To: "Ludger Buenger" <ludger.buenger@realobjects.com>
Cc: "Grant, Melinda" <melinda.grant@hp.com>, www-style@w3.org
On Thu, Jul 24, 2008 at 1:28 PM, Ludger Buenger <
ludger.buenger@realobjects.com> wrote:

> What I am missing is a way to set a counter to a specific value while
> maintaining the current scope.
>
>
>
> I believe this is problematic because there are use cases where you do not
> intend to open a new scope when setting a counter value  I mentioned a use
> case as an example.
>
>
>
> And this is not a paged media issue - I do also have others use cases at
> hand which do not involve paged media at all.
>
Keep in mind, though, exactly what scope refers to. [1]  When you do a
counter-reset, it establishes a new scope which encompasses the element,
it's children, *and it's siblings*.  Frex, say you made your own special
form of list called ordl, and had code/style set up like this:

ordl {
margin-left: 1em;
display: block;
border-top: thin solid black;
}

ordl[reset] {
  counter-reset: ordl-item;
}

listi {
  display: block;
}

listi::before {
  content: counter( ordl-item ) ": ";
  counter-increment: ordl-item;
}

<ordl reset>
  <listi>one</listi>
  <listi>two</listi>
  <listi>
    <ordl>
      <listi>three</listi>
      <listi>four</listi>
    </ordl>
  </listi>
  <listi>
    <ordl reset>
      <listi>five</listi>
      <listi>six</listi>
    </orld>
    <ordl>
      <listi>seven</listi>
      <listi>eight</listi>
    </orld>
  </listi>
  <listi>nine</listi>
</ordl>

You'd produce an output looking like this:
________
1: one
2: two
3:
  _______
  4: three
  5: four
6:
  _______
  1: five
  2: six
  _______
  3: seven
  4: eight
7: nine

(I included the border-top just so it was clear that the
five-six-seven-eight was from two different <ordl>s.)

So, this aspect of scope covers a lot of use cases.  Specifically, it allows
you to reset something and have that reset affect later siblings.  The only
thing that scoping does is prevent an element from resetting it's *parent's*
counter.  Do you have a usecase that requires this?  (Not that I doubt you,
I'm just curious.)

~TJ
Received on Thursday, 24 July 2008 19:38:37 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:55:10 GMT