当子元素具有不同的 `color-scheme` 时, `light-dark` 会出现问题
作者: foxt创建于 2024年9月30日更新于 2026年9月20日
如果您使用以下 HTML 代码:
<p>此文本应具有黑色背景</p>
然后应用以下 CSS:
```css
:root {
--background: light-dark(white, black);
--text: light-dark(black, white);
}
p {
color: var(--text);
background: var(--background);
color-scheme: dark;
}文本将变为黑色文本在白色背景上,因为 color-scheme 设置为 dark。但是,如果将此 CSS 更改为由 lightningcss 生成的转译 CSS:
:root{--background:var(--lightningcss-light,#fff)var(--lightningcss-dark,#000);--text:var(--lightningcss-light,#000)var(--lightningcss-dark,#fff)}p{color:var(--text);background:var(--background);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}文本将变为白色在黑色上。我认为这是因为 polyfill 使用的 CSS 变量不会重新计算,如果子元素更改了任何输入变量,而 light-dark 似乎会这样做。目前,您需要在更改 color-scheme 的每个元素上重新应用 :root 主题变量。
内容来源: parcel-bundler/lightningcss