Re: Specificity of :any (was Re: [css3-selectors] Grouping)

On Thu, Feb 25, 2010 at 5:16 PM, L. David Baron <dbaron@dbaron.org> wrote:
> On Thursday 2010-02-25 17:58 -0500, Boris Zbarsky wrote:
>> At least in Gecko's case, what you wrote above would indeed be more
>> or less just syntax sugar.  But this:
>>
>>   :any(#authors, #publications) div
>>
>> would probably be faster to match than:
>>
>>   #authors div, #publications div
>>
>> In fact, we're looking into implementing this right now (as
>> :-moz-any()) to more efficiently deal with the numerous rules of
>> this form that appear in our UA stylesheet.
>
> So the one thing that I just realized I'm not sure how to implement
> is specificity.  (What I actually have implemented is treating :any
> as a pseudo-class and ignoring its arguments, which probably isn't
> what we want.)
>
> So given a selector like:
>
> p:any(:hover,#mypara)
>
> Should this selector have:
>
>  specificity 11 (p + :any)
>  specificity 111 (p + :hover + #mypara)
>  specificity 121 (p + :any + :hover + #mypara)
>  specificity 11 (p + :hover) or 101 (p + #mypara) depending on how it
>   matches (with 101 if it matches both ways)?
>  one of 11 or 101, not depending on how it matches (just always the
>   lowest or highest)
>
> I'd note that the next-to-last seems like it might be best, but I
> can't think of an obvious way to implement it in our code.

Yes, ideally the :any() is transparent wrt specificity, which is your
second-to-last option.  I'm not opposed to the first or last(with
highest) options, though, if either of them end up being sufficiently
simpler.

~TJ

Received on Thursday, 25 February 2010 23:26:40 UTC