W3C home > Mailing lists > Public > www-style@w3.org > May 2016

[selectors4] Absolutizing and nested pseudo-functions

From: Mark Brown <mark@mercurylang.org>
Date: Tue, 10 May 2016 05:00:42 +1000
Message-ID: <CAM4AczB2KPnwhpUu=FBUm88WEV7X0TeJ+pGsCMziuDRh4mFZQA@mail.gmail.com>
To: www-style@w3.org
The rules on absolutizing relative selectors include the following (my
emphasis added):

"Otherwise, if the selector does not contain any instance of the
:scope pseudo-class (either at the top-level *or as an argument to a
functional pseudo-class*), prepend :scope followed by the white space
form of the descendant combinator." [1]

So, for example, when absolutizing the argument of :has() in

  E:has(a :matches(:scope b c))

the :scope would not be prepended because of the occurrence inside :matches().

Are there use cases for not prepending :scope when it is an argument
to a functional pseudo-class?

If my selector algebra is right, the above example is equivalent to

  E:has(b :matches(a c))

so it is at worst redundant. But other examples are more problematic.
The selector

  E:has(a:not(:scope))

doesn't just search below E, but must search everywhere else in the
tree for an 'a' element. Similarly for

  E:has(a:has(:scope b))

in which the :scope is in no way connected to E. Neither of these
cases seem to me like intended uses.

Therefore, if there are no use cases for it, I would like to propose
removing "or as an argument to a functional pseudo-class" from the
above rule.

Mark

[1] https://drafts.csswg.org/selectors-4/#absolutizing
Received on Tuesday, 10 May 2016 09:06:06 UTC

This archive was generated by hypermail 2.4.0 : Friday, 25 March 2022 10:09:03 UTC