This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 24239 - More clarification for argument in :not() and :matches()
Summary: More clarification for argument in :not() and :matches()
Status: NEW
Alias: None
Product: CSS
Classification: Unclassified
Component: Selectors (show other bugs)
Version: unspecified
Hardware: PC All
: P2 normal
Target Milestone: ---
Assignee: fantasai
QA Contact: public-css-bugzilla
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-08 14:33 UTC by Arkadiusz Michalski (Spirit)
Modified: 2014-01-08 14:33 UTC (History)
0 users

See Also:


Attachments

Description Arkadiusz Michalski (Spirit) 2014-01-08 14:33:34 UTC
Hello, in new module Selectors Level 4 we can use a selector list as an argument in :not() and :matches() pseudo-classes. But it will be nice (better) if one example will explain this case:

div:not(.heavy, #box) {color: red}

What exactly does it mean:

Case1
div:not(.heavy):not(#box) {color: red}

Case2 

div:not(.heavy), div:not(#box) {color: red}

equivalent:

div:not(.heavy) {color: red}
div:not(#box) {color: red}

Case1 and Case2 is not the same. Case2 will style <p class="heavy"> (second rule) and <p id="box"> (first rule), but Case1 no.

Maybe term's selector list in some way shown it, but one simple example can replace many long descriptions and uncertainties.

The same situation is for :matches(). I check it for :-moz-any() pseudo and it works like Case2. But dont know if :-moz-any() is or will be equivalent for :matches(). At this moment there is no browser with implements the new module, so we can't test anything.

On the other site, if not() and :matches() represent Case2, maybe consider adding next selector which represents Case1, like notAll(), matchesAll(), additional modyficator/identificator or sometching else. It can be short version for unnecessary repeat :not(), like:

:not():not():not():not():not():not()

PS. 

Last thing is unnecessary, I see in new level 4 we can sth like this:

:not([arg=val1][arg=val2][arg=val3][arg=val4][arg=val5][arg=val6])

and you considering multiple-value matching:

:not([arg=val1,val2,val3,val4,val5,val6]) << but again I wander what comma will means, conjunction or alternative.