- From: Michał Gołębiowski-Owczarek via GitHub <sysbot+gh@w3.org>
- Date: Wed, 08 Feb 2023 15:51:55 +0000
- To: public-css-archive@w3.org
mgol has just created a new issue for https://github.com/w3c/csswg-drafts:
== [selectors] Wrapping with `:is()` to get forgiveness changes semantics ==
The discussion in #7676 ended with a conclusion to make `:has()` unforgiving since you can always wrap its contents with `:is()` or `:where()`:
> fantasai: i support restricting to :is and :where, it's really simple, and because we do it this way you can control whether something is forgiving or not by wrapping in :is or :where
This has been since incorporated into the spec at https://w3c.github.io/csswg-drafts/selectors/#typedef-forgiving-selector-list:
> Note: Style rules still use the normal, unforgiving selector list behavior. [<forgiving-selector-list>](https://w3c.github.io/csswg-drafts/selectors/#typedef-forgiving-selector-list) is used in [`:is()`](https://w3c.github.io/csswg-drafts/selectors/#matches-pseudo) and [`:where()`](https://w3c.github.io/csswg-drafts/selectors/#where-pseudo) only. Although it does have some minor implications on specificity, wrapping a style rule’s selector in `:is()` effectively "upgrades" it to become forgiving, so long as it doesn’t contain any pseudo-elements (which aren’t valid in `:is()` or `:where()`).
However, this doesn't look as simple to me, since `:is`/`:where` take global selectors. For example, someone wanting to run:
```js
document.querySelectorAll('#test-elem:has(:new-pseudo-with-limited-support,div span)')
```
in a forgiving manner so that it works in browsers without support for `:new-pseudo-with-limited-support` may be surprised that the following:
```js
document.querySelectorAll('#test-elem:has(:is(:new-pseudo-with-limited-support,div span))')
```
will no longer require both the `span` and its ancestor `div` to be descendants of `#test-elem`.
Do I not understand something about this recommendation or is it not precise enough?
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/8430 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 8 February 2023 15:51:57 UTC