这实际上是可以用来做SASS映射代替的变量。下面是一个简单的例子:
动态引用:
$colors: (
blue: #007dc6,
blue-hover: #3da1e0
);
@mixin colorSet($colorName) {
color: map-get($colors, $colorName);
&:hover {
color: map-get($colors, $colorName#{-hover});
}
}
a {
@include colorSet(blue);
}
输出为:
a { color:#007dc6 }
a:hover { color:#3da1e0 }
动态创建:
@function addColorSet($colorName, $colorValue, $colorHoverValue: null) {
$colorHoverValue: if($colorHoverValue == null, darken($colorValue, 10%), $colorHoverValue);
$colors: map-merge($colors, (
$colorName: $colorValue,
$colorName#{-hover}: $colorHoverValue
));
@return $colors;
}
@each $color in blue, red {
@if not map-has-key($colors, $color) {
$colors: addColorSet($color, $color);
}
a {
&.#{$color} { @include colorSet($color); }
}
}
输出为:
a.blue { color: #007dc6; }
a.blue:hover { color: #3da1e0; }
a.red { color: red; }
a.red:hover { color: #cc0000; }
@castus这是如何解决您的问题?我遇到了一个非常类似的问题,我需要从列表中取一个字符串值并添加一个$并将其用作变量。 – cmegown 2013-09-11 19:52:25