angular - 基于类的 Scss 变量
问题描述
我正在尝试为我的一个项目进行主题化,并且我正在使用 css 变量。我正在定义css变量如下
.theme-1 {
--var-1: #ffe;
--var-2: #000;
}
.theme-2 {
--var-1: #fff;
--var-2: #000;
}
在 html 中我应用的主题如下
<div [ngClass]="'theme-1'">
<!--content>
<-->
</div>
一切都很好,除了这里提到的 IE -11 之前不支持 css 变量。
问题
有什么方法可以使用 scss 变量来实现这一点,以便我可以定义全局变量并根据类更改值。
注意:我在我的项目中使用 angular,因此我也必须担心视图封装。如果可以通过默认封装来实现答案,那就太好了。
提前致谢。
解决方案
我个人更喜欢为此使用函数,但你也可以使用 mixin 来实现。
创建一个地图,其属性绑定到与您拥有的主题一样多的值。
然后,定义一个自定义属性来获取此地图并返回所需的值。
$theme: (
color: (#000, #FFF),
border: (dashed, solid),
// etc.
);
@function theme($property, $index) {
@return nth(map-get($theme, $property), $index);
}
.light.foo {
color: theme(color, 1);
}
.dark.foo {
color: theme(color, 2);
}
推荐阅读
- google-cloud-platform - 如何在 AI Platform 上的自定义 Docker 映像中挂载 GCS 存储桶?
- python - 循环遍历 pandas 数据框以生成日期范围
- excel - Excel:当条件为真时,按顺序检查时间,同一列
- node.js - 尝试安装 node-opus 时出现纱线错误?
- javascript - 从有条件渲染的 JSX 内部调用类方法
- node.js - 如何在快速服务器上提供具有正确 mime 类型的静态图像/文件
- ios - 如何在 ASDisplayNode 中包装 SwiftUI 视图
- css - 除了悬停的元素之外,如何设置相同类型的所有元素的样式?
- c - while循环的问题
- javascript - 查找数据库数据输入的平均值