- From: Brad Kemper <brkemper@comcast.net>
- Date: Wed, 12 Mar 2008 08:55:36 -0700
- To: Christoph Päper <christoph.paeper@crissov.de>
- Cc: www-style Mailing List <www-style@w3.org>
- Message-Id: <C3BB74AF-CC55-46C9-8EC6-B25D50E5053A@comcast.net>

On Mar 12, 2008, at 3:59 AM, Christoph Päper wrote: > Also ':nth-child()' etc. probably will mostly be used with 'odd' > and 'even'. I don't know that that is true. I will probably use it a lot to select single elements when the HTML I don't control does not have IDs or classes where I need them. >> I personally wouldn't expect there to ever be space between the >> "2" and the "n". > > I would, if "2n" was expandable to "2*n": "2 * n", "2* n", "2 *n", > "2 n". > > David Baron proposed this earlier: > > Legal Examples: > :nth-child( 3n + 1 ) > :nth-child( +3n - 2 ) > :nth-child( -n+ 6) > :nth-child( +6 ) > Illegal Examples: > :nth-child(3 n) > :nth-child(+ 2n) > :nth-child(+ 2) > > Imagine making the addition (including its operator symbol) > implied, just like the multiplication. Which of the following > should be legal? > > :nth-child(3n1) -> :nth-child(3n+1) > :nth-child(3n 1) -> :nth-child(3n+1) > :nth-child(3n +1) -> :nth-child(3n+1) > :nth-child(3n -1) -> :nth-child(3n-1) > :nth-child(+3n 1) -> :nth-child(3n+1) > :nth-child(+3n +1) -> :nth-child(3n+1) > :nth-child(+3n -1) -> :nth-child(3n-1) > :nth-child(-3n 1) -> :nth-child(-3n+1) > :nth-child(-3n +1) -> :nth-child(-3n+1) > :nth-child(-3n -1) -> :nth-child(-3n-1) > :nth-child(3n + -1) -> :nth-child(3n-1) > :nth-child(3n+ -1) -> :nth-child(3n-1) > :nth-child(3n +-1) -> :nth-child(3n-1) > :nth-child(3n+-1) -> :nth-child(3n-1) In mathematical notation, writing the number and variable together ("3n", "2pi", etc.) is the same as writing them with a multiplication symbol ("3*n", "2*pi", etc.). But substituting a space a multiplication symbol ("3 n") does not mean the same thing, so that is what I meant by saying I would not ever expect there to be space between the "2" and the "n". For the same reasoning, I don't think you can imply the +/- symbol, because it stops making sense in mathematical notation. This really is a mathematical formula, where "n" is the progressively larger number representing the number of times repeated so far, starting with zero and increasing by one with each iteration (when using "+"). For each value of "n", solving the formula tells you which child number to apply the style to. If you replace the plus with a space (3n 1), then it stops making sense as a math formula, at least in my knowledge of mathematical notation. I think the spec is not really that clear on the fact that this really is a mathematical formula in which n = {0,1,2,3,4...}, where solving the equation gives you the child number (assuming the child elements are numbered starting with 1). It never really comes out and says it that explicitly, even though it gives examples where a=1 or b=0 or a is negative, etc. and the math continues to work. It seems to me that the entire contents of the parentheses could just be fed to a mathematical parser instead of tokenizing as units or whatever. If that was the case, then ":nth-child(3n+ -1)" should be allowed, as should other equivalencies that can be written with the same symbols, such as ":nth-child(-1 + 3n)".

Received on Wednesday, 12 March 2008 15:56:03 UTC