- From: Paul Duffin <pduffin@volantis.com>
- Date: Sat, 18 Sep 2010 11:23:29 -0600 (MDT)
- To: "L. David Baron" <dbaron@dbaron.org>
- Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, Matthew Millar <mattmill30@hotmail.com>, www-style@w3.org
----- Original Message -----
> On Sat, Sep 18, 2010 at 1:26 AM, Paul Duffin <pduffin@volantis.com>
> wrote:
> > ----- Original Message -----
> >> (Note, though, that you wrote the selector wrong. :any()'s
> >> arguments
> >> are comma-separated, because you can have arbitrary selectors as
> >> arguments. So it needs to be:
> >>
> >> :any(e, #id, .class) :any(e, #id, .class) :any(e, #id, .class)
> >> {...}
> >>
> >
> > Ok, I couldn't find :any defined anywhere, ,only
> > http://dbaron.org/log/20100424-any
>
> Yeah, it's not in any draft yet. It's just been discussed on the
> mailing list, and then experimentally implemented by dbaron.
>
>
> > which only allows a simple selector in the :any(). Is that just an
> > implementation limitation?
>
> Are you sure? The particular example he gives uses only simple
> selectors as arguments, but I don't think that's a general restriction
> in his implementation. Right, dbaron?
>
My mistake, the page says:
":-moz-any() is allowed to contain selectors with multiple simple selectors (using the css3-selectors definition of simple selectors, not the CSS 2.1 definition), but it is not allowed to contain combinators or pseudo-elements."
I missed the "selectors with multiple simple selectors" part, I just read "contain simple selectors", probably because I hadn't realised that there was that big a difference between the CSS 3 definition of simple selector and the CSS 2.1 definition and went off to read them.
CSS 2.1 says "A simple selector is either a type selector or universal selector followed immediately by zero or more attribute selectors, ID selectors, or pseudo-classes, in any order. The simple selector matches if all of its components match."
CSS 3 says "A simple selector is either a type selector, universal selector, attribute selector, class selector, ID selector, or pseudo-class."
So according to that it looks as though :-moz-any(a.id, p.class) would be valid.
> > On a related note I just looked at :not(),
> > http://www.w3.org/TR/css3-selectors/#negation, which is a similar
> > 'logical pseudo class' and it is limited to a simple selector, and
> > cannot contain itself. What are the reasons for this limitation,
> > e.g. why can't I write any of the following?
> > * :not(a.special)
> > * :not(li > a)
> > * :not(ol > li, ul > li)
> >
> > The latter could be written as:
> > * :not(:any(ol, ul) > li)
>
> Not sure; I wasn't in the group at the time.
>
Just checked again and it says:
"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."
Does "simple selector" in this case use the CSS 3 definition (which it should given it is in the CSS 3 specification), or does it mistakenly use the CSS 2.1 definition, which would allow things like :not(a.special) but not :not(li > a).
Received on Saturday, 18 September 2010 17:24:03 UTC