- From: Paul Duffin <pduffin@volantis.com>
- Date: Sun, 19 Sep 2010 10:36:58 -0600 (MDT)
- To: Alan Gresley <alan@css-class.com>
- Cc: Boris Zbarsky <bzbarsky@mit.edu>, www-style@w3.org, Anne van Kesteren <annevk@opera.com>
----- Original Message -----
> Anne van Kesteren wrote:
> > On Sun, 19 Sep 2010 14:40:33 +0200, Boris Zbarsky <bzbarsky@mit.edu>
> > wrote:
> >> This has been discussed before on the list, as I recall, but one
> >> issue
> >> was that something like:
> >>
> >> :not(a.foo)
> >>
> >> is, at least to some people, ambiguous. Does it mean
> >>
> >> :not(a):not(.foo)
> >>
> >> or does it mean
> >>
> >> :not(a), :not(.foo)
> >>
> >> or something else?
> >>
> >> It seems to me that the ":not(a), :not(.foo)" meaning is what's
> >> meant,
> >> though....
> >
> > Really? I would expect :not(a):not(.foo) personally. Seems more in
> > line
> > with how a.foo works (without :not()).
>
>
> I would expect likewise. You would want negation of style applied to
> <a> with the class of "foo". <a class="foo" />
>
According to the discussion about :nth-of-type() a simple selector defines a set that contains those elements that match those selector. A sequence of simple selectors defines the intersection of the sets defined by a simple selector.
"a" - set containing all elements with local name "a".
".foo" - set containing all elements with class name "foo".
"a.foo" - set containing all elements that have both the local name "a" and the class name "foo".
":not(a.foo)" - set that contains every element not in the set "a.foo".
So, given the following elements:
1 - <a class="foo">
2 - <a class="bar">
3 - <b class="foo">
4 - <b class="bar">
Then:
"a" = {#1, #2}
".foo" = {#1, #3}
"a.foo" = {#1}
":not(a.foo)" = {#2, #3, #4}
":not(a)" = {#3, #4}
":not(.foo)" = {#2, #4}
":not(a):not(.foo)" = {#4}
":not(a), :not(.foo)" = {#2, #3, #4}
Assuming my original assumption that ":not(S)" is the set that contains every element not in the set "S" then:
":not(a.foo)" = ":not(a), :not(.foo)"
Received on Sunday, 19 September 2010 16:37:35 UTC