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

Re: [css3-selectors] details of :nth-child() syntax

From: fantasai <fantasai.lists@inkedblade.net>
Date: Thu, 16 Oct 2008 05:01:33 -0700
Message-ID: <48F72D1D.10202@inkedblade.net>
To: www-style@w3.org

L. David Baron wrote:
> I found a few issues in the description of the syntax of
> :nth-child() in
> http://www.w3.org/TR/2005/WD-css3-selectors-20051215/#nth-child-pseudo
> 
> I found two cases where the normative description of the syntax
> disagrees with the examples given.  I think the intent is pretty
> clear from the examples and we should fix the normative text.  In
> particular, I propose:
> 
> (1) Changing:
>   # When <var>a</var>=0, the <var>a</var><code>n</code> part need
>   # not be included, so the syntax simplifies to
>   # <code>:nth-child(<var>b</var>)</code> and the last example
>   # simplifies to <code>:nth-child(5)</code>.
> to read:
>   # When <var>a</var>=0, the <var>a</var><code>n</code> part need not be
>   # included.  When <var>a</var><code>n</code> is not included, the
>   # <code>+</code> sign before <var>b</var> (when allowed) may also be
>   # omitted.  In this case the syntax simplifies to
>   # <code>:nth-child(<var>b</var>)</code> and the last example
>   # simplifies to <code>:nth-child(5)</code>.
> Without this change, I think the normative text forbids
> :nth-child(5), requiring instead that the author write
> :nth-child(+5).

Fixed.

> (2) Changing:
>   # If b=0, then every ath element is picked. In such a case, the b
>   # part may be omitted. 
> to instead say:
>   # If b=0, then every ath element is picked. In such a case, the +b
>   # part may be omitted. 
> Without this change, it seems like authors would be required to
> write :nth-child(2n+) rather than :nth-child(2n).

Fixed. Wrote
   # If b=0, then every ath element is picked. In such a case, the +b
   # (or -b) part may be omitted unless the a part is already omitted.

> There are also two issues that I find unclear:
> 
> (3) Is -0 allowed as a value for a and/or b?  If so, the sentence:
>   # When the value b is negative, the "+" character in the
>   # expression must be removed (it is effectively replaced by the
>   # "-" character indicating the negative value of b).
> should be clarified to say that :nth-child(n+-0) is not allowed.  If
> not, the sentence:
>   # The a and b values must be zero, negative integers or positive
>   # integers.
> should probably clarified to say that zero may not be preceded by a
> minus sign.

Fixed by replacing
   # When the value b is negative
with
   # When the value b is preceded by a negative sign

> (4) The spec says:
>   # If both a and b are equal to zero, the pseudo-class represents
>   # no element in the document tree.
> When both are zero, the spec technically allows both to be omitted.
> This means :nth-child() is the same as :nth-child(0) and
> :nth-child(0n) and :nth-child(0n+0).  Is this intentional, or should
> it only be possible to omit one and not both (i.e., omitting both
> would be a syntax error)?  Either way, I think it should be stated
> explicitly.

Clarified by adding "unless the {a|b} part is already omitted" to both
statements about omitting parts.

~fantasai
Received on Thursday, 16 October 2008 12:02:16 GMT

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