W3C home > Mailing lists > Public > www-style@w3.org > March 2001

Re: On nth-child, etc..

From: Jonas Sicking <sicking@bigfoot.com>
Date: Sat, 10 Mar 2001 17:07:56 +0100
Message-ID: <00a601c0a97c$46b9e280$5412a8c0@Milwork08>
To: <www-style@w3.org>
fantasai wrote
> I am arguing for
>   - the removal of :nth-last-child etc., with negative
>     values taking its place
>   - the adoption of Jonas Sicking's range proposal[1]
>
> As this has been sent well after the March 1st deadline,
> it is an *unofficial* comment.
> I just figured it would be of more use on www-style than
> swimming around in my head.
>
>
> IMO, :nth-last child is an unnecessary pseudo-class; it
> increases the spec without adding to it, and it only
> means more for CSS coders to memorize and implementors
> to implement. Allowing negative vlues to mean "count from
> the end" can easily replace its functionality.

I totally agree with you, I first saw using negative indexnumbers in perl
and have loved the syntax ever since. However it dosn't really fit nicly
with the an+b synax, though it surly could be done. The following syntax
could be used:
:nth-child(-1..10)  /* ten last children */
:nth-child(-3n-1)  /* same as 3n+1 (1,4,7...) but count from behind */
:nth-child(-3n+1)  /* same as 3n-1 (2,5,8...) but count from behind */

so counting would be done from behind if the *first* number is negative.
Unfortunatly the last two rules aren't very intuitive (but IMHO more logical
then the current meaning of -3n+1).

You could also allow signs on the c constant which would also allow
selectors like

:nth-child(5..-5) /* fifth child to fifth last child */

which the currently has to be done using either :not() or several rules
"undoing" each other. However, what would a rule like :nth-child(-3n-1..10)
mean?

> Negatives are logical because
>   a) The negative sign means "the opposite of"
>      Applied to indexing: the opposite of first
>      is last. The opposite of second is second
>      from the end.
>   b) Other languages have already set a precedent
>      for this use of negative parameters.
>
> The only thing :nth-last-child allows that is not
> addressed by negative values is the ability to restrict
> the upper bound of the increment, as in
>   :nth-child(-3n + 15)
>
> However, this is IMO more intuitively addressed by
> using the range proposition in a second selector:
>   :nth-child(3n):nth-child(1..15)
> Very few people would start at the fifteenth element
> and count backwards by threes. They're more likely to
> start at 3 and count by threes until 15; they're more
> likely to express their intent as "every third element
> out of the first 15".

I couldn't agree more.

/ Jonas Sicking
Received on Saturday, 10 March 2001 11:07:04 GMT

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