我是SASS的新手,我试图让用户能够为网站选择不同的主题 . 我创建了一个如下所示的 Map :
$theme-map: (
main-theme: (
primary: #007991,
secondary: #55D3AE,
tertiary: #D35555,
gradientFirstColour: #007991,
gradientSecondColour: #34EBE9
),
test-theme: (
primary: #1abc9c,
secondary: #e67e22,
tertiary: #c0392b,
gradientFirstColour: #2c3e50,
gradientSecondColour: #f1c40f
)
)
现在我不确定如何循环这些然后将它们应用于特定元素 . 示例:我想选择主题,然后使用主要颜色作为按钮的背景,使用div的背景的辅助颜色,以及在选择测试主题时使用相同的颜色 . 有人可以帮帮我吗?
提前致谢!
1 回答
我相信有很多方法可以实现这一点,我有过去做类似事情的经验,所以这是我的实现 .
Step 1
为您拥有的不同主题创建多个CSS输出文件,例如
main.css
和test.css
. 您也可以在名称前加上前缀,以使它们更容易理解,例如theme-main.css
和theme-test.css
.我建议将一般样式(如重置,边距,排版)保存在一个文件中,如
global.css
,并在单独的文件中添加您的主题 . 在HTML中将这些CSS文件加载到彼此之上 .主旋律:
测试主题:
在项目的Sass文件夹中,沿
global.scss
创建theme-main.scss
和theme-test.scss
.Step 2
将主题颜色移动到不同的部分Sass文件中,并确保变量的名称相同 . 我个人会在项目的Sass文件夹中创建文件夹,其名称与我的CSS输出文件相匹配,并将这些文件放在那里 .
在您的情况下,在Sass文件夹中创建
_theme-main
和_theme-test
文件夹 . 在每个文件夹中创建一个文件,使用以下内容将它们命名为_variables.scss
:在
_theme-main/_variables.scss
:并在
_theme-test/_variables.scss
:Step 3
在您需要的文件中加载必要的变量 .
在您的文件
theme-main.scss
中,放置:并在您的文件
theme-test.scss
中,放置:到目前为止,这确保了不同的主题文件可以使用相同变量的不同值 . 事实上,变量
$colors
在这两个主题文件中被称为相同,实际上它们并不相同 .Step 4
使用要应用主题的样式创建部分Sass文件 .
因为我们已经将
theme-main.scss
的依赖项放在_theme-main
文件夹中,并且_theme-test
文件夹中的theme-test.scss
的依赖项,我个人不希望破坏这种模式,所以我会创建一个shared
文件夹或类似的东西并放入导入的部分Sass文件在那里有多个Sass文件 . 你当然可以跳过这个,但我相信这有助于保持你的项目更易于维护 .保持您的示例,创建一个名为
_styles.scss
的部分Sass文件并将其放在shared
文件夹中 . 将以下代码放入其中:现在您需要做的就是在主题文件中导入此部分文件 .
在您的文件
theme-main.scss
中,放置:并在您的文件
theme-test.scss
中,放入:如果我没有犯任何错误,你的输出CSS文件应如下所示:
theme-main.css
:theme-test.css
:如果您发现此内容有用或者您有任何其他问题或疑虑,请与我们联系 .