这是因为可变作用域。
在 Sass 中,在 mixin 或函数之外声明的所有变量都将具有全局范围,并且可以在任何使用该变量的 Sass 选择器中引用。(来源)
这意味着在 mixin 或函数内设置的任何变量值仅在该 mixin 或函数内可用,即使该变量先前是全局设置的。
在不同的 Sass 变量集之间切换
偏音
您可以为每个主题创建一个部分文件,并在每个主题的父类下导入这些文件。
_theme-dark.scss
$background-color: #000;
$text-color: #fff;
_theme-light.scss
$background-color: #fff;
$text-color: #000;
_themed-page.scss
body {
background: $background-color;
color: $text-color;
}
主题样式.scss
.theme-dark {
@import "theme-dark";
@import "themed-page";
}
.theme-light {
@import "theme-light";
@import "themed-page";
}
地图
另一种选择是将主题值存储在地图中并具有实用功能来检索所需的值。(来源)
_theme-variables.scss
$theme: 'default';
$theme-values: (
'background-color': (
'default': #eee,
'light': #fff,
'dark': #000
),
'text-color': (
'default': #333,
'light': #000,
'dark': #fff
)
);
@function theme-value($key) {
$map: map-get($theme-values, $key);
@return map-get($map, $theme);
}
_themed-page.scss
body {
background: theme-value('background-color');
color: theme-value('text-color');
}
主题样式.scss
.theme-dark {
$theme: 'dark';
@import "themed-page";
}
.theme-light {
$theme: 'light';
@import "themed-page";
}