从Sass v3.3开始,您可以尝试使用地图- 听起来这可能是使用它们的一个很好的案例。它们允许您将键及其值存储在一个映射变量中:
$brand_clr: (home: blue, about: orange, contact: yellow);
然后,您可以使用以下函数通过其键访问单个值get-map()
:
background: map-get($brand_clr, about);
然后你可以遍历地图并避免大量的硬编码:
@each $brand, $clr in $brand_clr {
body.#{$brand} {
background: $clr;
}
// and other selectors that change with the brand
}
甚至更好 - 设计一个可以包含在任何规则集中的mixin :
$color: red !default; // some default color - will be overwritten by brand color
@mixin branding {
@each $brand, $clr in $brand_clr {
&.#{$brand} {
$color: $clr;
@content;
}
}
}
body {
@include branding {
background: $color;
}
}
如果您在Sass <=3.2上,您可以使用列表而不是地图来实现类似的效果:
$brand_clr: (home, blue), (about, orange), (contact, yellow);
在 mixin 中,您可以使用它的索引访问各个值nth()
:
$color: null;
@mixin branding {
@each $brand in $brand_clr {
&.#{nth($brand,1)} {
$color: nth($brand,2);
@content;
}
}
}