- From: andruud via GitHub <sysbot+gh@w3.org>
- Date: Mon, 10 Jun 2024 13:05:08 +0000
- To: public-css-archive@w3.org
Yeah, at least if we choose the path forwards carefully, it should be easy. That carefully chosen path could be something like:
* When you see an `if()` in a declaration's value, you get the "assumed valid at parse time" behavior we currently get when there's a `var()` or `env()` in the value.
* Substituting an `if()` then mostly just becomes an advanced `var()` substitution, with some conditionals built in to it.
* The `if()` function can evaluate exactly what style CQs can evaluate, and nothing else (for now).
* This means only custom properties are supported in practice. (Despite [style()](https://drafts.csswg.org/css-contain-3/#style-container) currently being specified with support for standard properties, implementations never picked it up.)
Of course we'll need to deal with cycles. e.g.:
```
div {
--x: if(style(--y: 1), 0, 1);
--y: var(--x);
}
```
But we should be well equipped to handle that.
So if the CSSWG determines that this is worthwhile, it should be quite doable overall.
---
I suppose it's worth thinking about [custom functions](https://css.oddbird.net/sasslike/mixins-functions/#intro) here as well, since they also kind of provide "inline" conditionals. It might not be ergonomic to use for the use-cases you have in mind, though.
--
GitHub Notification of comment by andruud
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10064#issuecomment-2158298904 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 10 June 2024 13:05:09 UTC