【发布时间】:2021-01-31 01:33:14
【问题描述】:
我有一个带有使用语义变量的 scss 文件的现有项目:
$background-color: white;
body {
background-color: $background-color;
}
我想在正文中添加主题类时将背景更改为黑色:
<body class="theme-dark">...</body>
如果我删除课程(或切换到主题灯),则返回白色。
我还没有在 scss 中找到任何轻量级的方法来做到这一点(为每个主题参数化一个类似乎是一种很难维护的方法)。
我找到了一个混合 scss/css-custom 属性的解决方案:
原文:
.theme-light {
--background-color: white;
}
更新(基于 Amar 的回答):
:root {
--background-color: white;
}
.theme-dark {
--background-color: black;
}
$background-color: var(--background-color);
body {
background-color: $background-color;
}
将 scss 变量定义为具有 css 变量扩展作为值,即(从上面):
$background-color: var(--background-color);
生成以下css:
:root { --background-color: white; }
.theme-dark { --background-color: black; }
body { background-color: var(--background-color); }
这似乎是我们想要的......?
我喜欢它,因为它只需要更改 $background-color 的定义(不是非常大的 scss 文件中的所有用法),但我不确定这是否是一个合理的解决方案?我对 scss 很陌生,所以也许我错过了一些功能..?
【问题讨论】:
-
这将一直有效,直到您决定说
darken($background-color, 10%); -
@YuryTarabanko 啊.. 我知道一定有什么:-/
-
我认为您可以使用 RGB 数字代替颜色名称,这将解决此问题