- From: Mayank via GitHub <sysbot+gh@w3.org>
- Date: Wed, 19 Jun 2024 19:42:18 +0000
- To: public-css-archive@w3.org
I was thinking about this again, and I'm starting to wonder if we need something like `@context` to allow authors to place styles before or after the default context(s).
Let's think about CSS resets again. Most sites do something like this today:
```css
*, ::before, ::after {
box-sizing: border-box;
margin: 0;
}
```
This has low specificity and can be de-prioritized further using `@layer`. But it still takes precedence over the previous contexts. This is a problem because it makes it hard to write styles using `:host` and `:slotted` selectors.
```html
<my-component>
<template shadowrootmode="open">
<style>
/* This gets overridden by our reset 🙁 */
:host { margin: 1rem }
</style>
<slot></slot>
</template>
</my-component>
```
What if we instead allowed authors to put styles in a context that precedes all other contexts? This would be the ideal place to put resets and default styles.
```css
@context defaults {
*, ::before, ::after {
box-sizing: border-box;
margin: 0;
}
}
```
To take this one step further, it would be equally useful to have a context that comes after all other context. This would be a great place for e.g. browser extensions to put user styles.
For this to work, we'd need either pre-determined names or a different at-rule.
```css
@context(pre) {
/* resets/defaults go here */
}
/* all regular styles will fit in between */
@context(post) {
/* user styles go here */
}
```
There's a lot of bikeshedding opportunities, but hopefully the idea is clear: `@context` would be a thing that lives one level above `@layer`. This means `@layer` can be used to organized within each context.
--
GitHub Notification of comment by mayank99
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10094#issuecomment-2179369415 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 19 June 2024 19:42:19 UTC