W3C home > Mailing lists > Public > www-style@w3.org > October 2000

Re: selector negation (was: Re: New version of the Selectors module of CSS3)

From: Jonas Sicking <sicking@bigfoot.com>
Date: Mon, 9 Oct 2000 23:43:11 +0200
Message-ID: <003a01c03239$ec138200$3110f7d4@ericsson.se>
To: "Bjoern Hoehrmann" <derhoermi@gmx.net>, <www-style@w3.org>
Bjoern Hoehrmann wrote
> * "Jonas Sicking" <sicking@bigfoot.com> wrote:
> | I'd guess that the WG has recogniced the need for class inversion since
the
> | CSS3 drafts has contained inversion of some of the classes. What I'm
asking
> | for is to make inversion generic on *all* pseudo classes by saying "any
> | pseudoclass can be inverted by putting not- infront of it" rather then
> | adding some specific classes that are inverted. That way it could also
be
> | possible to have the CSS parser handle the inversion and thus making css
> | renderers a bit slimmer.
>
> I really don't like a 'not-' prefix as a generic modifier.
> What about a suffix pseudo-class?
>
>   p:contains("foo"):not
>
>   "selects element p not containing 'foo'"
>
>   a[href^='http://www.w3.org']:not
>
>   "selects element a with href not starting with 'http://www.w3.org'"
>
>   p:subject > a:not
>
>   "selects element p with no child 'a'"
>
>   h1:subject + p:not
>
>   "selects element h1 with no adjacent sibling p"
>
>   a:hover:not

> I think it makes small sense to say for negating attribute selectors you
use
> this syntax for negating pseudo-classes use that syntax, for negating type
> selectors use again another syntax.

I completly agree that the "not-" syntax is not perfect. However the :not
pseudoclass looks even stranger to me. Think of a selector like

a[href='http://www.w3.org']:not:contains('foobar'):not
and
a[href='http://www.w3.org']:not[class~='standard']:hover:not

that gives really messy syntax.
The coder in me wants to use ! for all inversions

a[href!='http://www.w3.org']:!contains('foobar')
and
a[href!='http://www.w3.org'][class~='standard']:!hover

but the designer-friendly-guy in me likes the not- syntax better.

I think it will be hard to find a good common syntax for attributes,
pseudoclasses and elements because they have different syntax in CSS. If
they don't share a "match syntax" why should they share a "don't match"
syntax.

/ Jonas Sicking
Received on Monday, 9 October 2000 17:42:17 GMT

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