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

Re: Specificity: nth-of-type versus attribute selector?

From: Anton Prowse <prowse@moonhenge.net>
Date: Sun, 04 Jul 2010 21:59:26 +0200
Message-ID: <4C30E81E.2050004@moonhenge.net>
To: www-style@w3.org
CC: Estelle Weyl <estelle@weyl.org>, "L. David Baron" <dbaron@dbaron.org>


Estelle Weyl wrote:
> 
> On Jul 4, 2010, at 9:32 AM, Anton Prowse wrote:
> 
>> L. David Baron wrote:
>>> On Sunday 2010-07-04 10:24 +0200, Anton Prowse wrote:
>>>> "Specificity" isn't the right term here (it has another meaning in CSS
>>>> Selectors [3]) but I understand what you're asking.  However, there is
>>>> no universal common behaviour of pseudo-classes as regards their
>>>> interaction with other parts of the sequence of simple selectors to
>>>> which they belong.
>>>>
>>>> Hence we must turn to the definition of the :not pseudo-class to
>>>> discover its behaviour:
>>>>
>>>> "The negation pseudo-class, :not(X), is a functional notation taking a
>>>> simple selector (excluding the negation pseudo-class itself) as an
>>>> argument. It represents an element that is not represented by its
>>>> argument."[4]
>>>>
>>>> So, in the sense you mean, the :not pseudo-class does behave 
>>>> differently
>>>> from the :nth-of-type pseudo-class in that the whole of the simple
>>>> selector argument is taken into consideration.
>>> I think this is a confusing way to describe things.  I think it's
>>> clearer to simply say that the parts of the simple selector are
>>> independent of each other, and then the results are combined.  Thus:
>>>  :nth-of-type(5) selects any p element that is the fifth p element
>>>  within its parent, any div element that is the fifth div element
>>>  within its parent, any i element that is the fifth i element
>>>  within its parent, etc.
>>>  p selects any p element.
>>>  p:nth-of-type(5) selects the intersection of those two sets, which
>>>  is any p element that is the fifth p element within its parent.
>>> Thus, if you add attribute selectors to the same simple selector,
>>> you're not changing what :nth-of-type() means, you're just
>>> intersecting the result with an additional restriction.
>>
>> Yes, I fully agree that intersection is the right way to view this (and
>> was planning to say so should Estelle have replied; this formulation
>> only occurred to me seconds after pressing Send ;-)
>>
>> img[src*="photo"]:nth-of-type(odd)
>>
>> is the set of elements E which satisfy all of the following properties:
>>
>> E is an img element
>> E has a src attribute whose value features the substring "photo"
>> E is the first or third or fifth or ... element of its type (ie img) of
>> its parent.
>>
>>
>> But what I was trying to emphasize in my comment is that :not is in some
>> sense more powerful than nth-of-type pseudo-class.  If nth-of-type was
>> renamed slightly (nth-of-specialized-kind ?!) and took a simple selector
>> as an argument as well as the an+b notation, then it would behave a bit
>> more like :not (as well as addressing the problem which I think Estelle
>> wanted to solve).
>>
>> Cheers,
>> Anton Prowse
>> http://dev.moonhenge.net
>>
>>


> I am looking for
> Of the image that have src*=photo, match the odd ones.

That's what you need my hypothetical :nth-of-specialized-kind 
pseudo-class ;-)

:nth-of-specialized-kind(odd, img[src*="photo") {
	[...]
}


> I am getting
> 
> Of the Odd images on the page, match the ones that also have source photo
> 
> Is this a correct browser rendering according to the specificiations?

Yes.


> Is there a way to return first the attribute selector portion, then apply 
> the nth-of-type pseudo class on top of that?

Not that I know of (and I don't think my pseudo-class is likely to catch 
on!).


Cheers,
Anton
Received on Sunday, 4 July 2010 20:00:51 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:29 GMT