【发布时间】:2018-03-19 00:23:23
【问题描述】:
现在我们正在使用 scss mixin (https://github.com/zellwk/themify) 为我们应用中的 React 组件提供不同的主题。
效果很好,但在编译的 css 文件中会产生相当长的选择器链。
虽然我们必须提供在运行时更改主题的能力(这对于当前的解决方案来说并不麻烦,我们只需要在 body 元素上切换一个类名)默认用例是,主题不会改变。
因此我们考虑通过将样式表拆分为单独的文件来降低样式表的复杂性和文件大小。
例子:
themes.scss:
$themes: (
red: (
mainColor: #aa3939,
secondaryColor: #D46A6A
),
blue: (
mainColor: #2e4272,
secondaryColor: #4f628e
)
);
button.sccs
@import 'themes.scss';
.button {
@include themify($themes) {
color: themed('secondaryColor');
background-color: themed('mainColor');
}}
}
这就变成了:
.theme-red .button {
color: #D46A6A;
background-color: #aa3939;
}
.theme-blue .button {
color: #4f628e;
background-color: #2e4272;
}
现在我希望它变成:
theme-red.css:
.button {
color: #D46A6A;
background-color: #aa3939;
}
theme-blue.css:
.button {
color: #4f628e;
background-color: #2e4272;
}
我们不依赖于themify mixin,我们可以将其更改为任何一种可以与webpack一起使用的解决方案。任何正确方向的提示将不胜感激! :)
【问题讨论】:
-
你想出解决方案了吗?我正在尝试做一些非常相似的事情。
-
将主题变量拆分为单独的 2 个条目文件。每个条目应该只指定它关心的一组主题值。您的 mixin 将循环遍历您定义的每个主题条目文件的那一组。