Re: [selectors] Are really arbitrary selectors allowed in :not()?

On 19 January 2015 at 19:57, Benjamin Poulain <benjamin@webkit.org> wrote:
>
> The selector list inside :not() applies to the element being matched.
>
> div:not(.someclass > span) never matches anything since no element would have the local names "div" and "span" simultaneously.

Ok, that makes sense. Though IMO that is unclear from the
specification. And it is also missing a proper example illustrating
this behavior.

> span:not(div > .someclass) matches any span that does not have a class "someclass" and is not under a div.

So an equivalent to :not(div) > span:not(.someclass).

> This selector already works in WebKit Nightly, you can try it there. It is really useful to get elements that are not the in certain subtrees, e.g. img:not(:any-link >> *)

Is there a Windows build available somewhere?

Sebastian

> On 1/19/15, 2:03 AM, Sebastian Zartner wrote:
>
> Selectors Level 4 removes the restriction to simple selectors for the :not() pseudo-class and now allows it to take a selector list. The only restriction mentioned is that pseudo-elements are forbidden.
> Does this mean it allows arbitrary selectors like matching descendants?
>
> Examples:
> div:not(.someclass > span)
> section:not(a:hover)
>
> I assume the selectors should be restricted to aspects of the element as in Level 3, i.e. :not() takes a list of *simple* selectors.
> Otherwise it would cover the functionality of the :has() pseudo-class and fall into the category of complete selector profiles.
>
> Sebastian
>
>

Received on Tuesday, 20 January 2015 16:37:31 UTC