首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在:root和for全局变量中触发偏好配色方案?

如何在:root和for全局变量中触发偏好配色方案?
EN

Stack Overflow用户
提问于 2021-07-03 19:41:50
回答 1查看 52关注 0票数 0

我有一个类似下面的scss代码:

代码语言:javascript
复制
:root {
  ...some global color related variables
  @media (prefers-color-scheme: dark) {
    ...global colors are overwritten 
  }
}

我有一个在暗模式和亮模式之间切换的按钮,它的javascript代码是这样工作的:

代码语言:javascript
复制
document.documentElement.style = `color-scheme: ${mode};`; // mode is either light or dark
const meta = document.querySelector('meta[name="color-scheme"]');
meta.content = mode; // mode is either light or dark

它将其样式color-scheme: light or dark应用于html元素和所有其他元素,但它不会在与:root和全局变量相关的样式中触发prefers-color-scheme,甚至不会触发其他地方的样式。我怎么才能做到这一点呢?

PS1:当我使用chrome浏览器本身(在开发工具中使用Emulate CSS prefers-color-scheme: dark )更改网站的配色方案时,它工作得很好,并且全局变量会被覆盖。

PS2:我正在尝试使用配色方案实现暗模式,并避免添加类或类似的东西,这是因为浏览器的一些默认样式,应用程序认为它是一个浅模式的网站,而不是(就像自动填充输入中的-内部-浅-暗颜色)

EN

回答 1

Stack Overflow用户

发布于 2021-07-03 20:12:43

翻转媒体查询和根选择器的嵌套应该可以做到这一点。

代码语言:javascript
复制
:root {
  --bg: hotpink;
}

@media (min-width: 600px) {
  :root {
    --bg: blue;
  }
}


body {
  background-color: var(--bg);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68235939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档