我正在尝试使用映射定义(实际上是覆盖)一些 SASS 变量,以代替我通常使用变量插值所做的事情。这是配置引导主题,所以我认为我无法有效地重写下游以使用地图。
目前我正在这样做:
$btn-default-color: $color-text;
$btn-default-bg: $color-white;
$btn-default-border: $btn-default-bg;
$btn-primary-color: #fff !default;
$btn-primary-bg: $brand-primary !default;
$btn-primary-border: darken($btn-primary-bg, 5%) !default;
$btn-success-color: #fff !default;
$btn-success-bg: $brand-success !default;
$btn-success-border: darken($btn-success-bg, 5%) !default;
$btn-info-color: #fff !default;
$btn-info-bg: $brand-info !default;
$btn-info-border: darken($btn-info-bg, 5%) !default;
$btn-warning-color: #fff !default;
$btn-warning-bg: $brand-warning !default;
$btn-warning-border: darken($btn-warning-bg, 5%) !default;
$btn-danger-color: #fff !default;
$btn-danger-bg: $brand-danger !default;
$btn-danger-border: darken($btn-danger-bg, 5%) !default;
相反,我想创建这样的地图,然后运行@each
循环代替:
$btn-colors-map: (
default: (
bg: $color-white,
bg-hover: $color-ghost,
border: $color-white,
border-hover: $color-ghost
),
primary: (
bg: $color-white,,
bg-hover: $color-ghost,
border: $color-white,
border-hover: $color-ghost
)
)
// poor pseudo-code, sorry!
@each $key, $btn in $btn-colors-map {
$btn#{$key}-color: $btn[bg];
}
但不幸的是,我在 SASS 地图上读到的文档技术性很强,并且几乎没有提供有关如何实际解决 var 插值间隙的实际示例。我还没有弄清楚如何让它真正发挥作用(或者在技术上是否可行)。