Sass 在嵌套的每个循环中将映射名作为参数传递

Sass 在嵌套的每个循环中将映射名作为参数传递,sass,Sass,是否可以在嵌套的每个循环中将映射名作为参数传递 例如,我们有以下几点: $colorsets: () !default; $colorsets: map-merge( ( "greys": "get-gray", "reds": "get-red" ), $colorsets ); @each $colorset, $value in $colorsets { /* #{$colorset} #{$value} */ @each $color, $v

是否可以在嵌套的每个循环中将映射名作为参数传递

例如,我们有以下几点:

$colorsets: () !default;
$colorsets: map-merge(
  (
    "greys": "get-gray",
    "reds": "get-red"
  ),
  $colorsets
);

@each $colorset, $value in $colorsets {
    /* #{$colorset} #{$value} */
    @each $color, $value in $colorset {
        /* #{$color} #{$value} */
        // do some stuff
    }
}
其中
灰色
红色
也是带有一些颜色的贴图


我的目标是从第一个循环收集映射名,并将其作为参数传递给第二个循环。问题是编译器将变量作为文本,而不是映射

问题解决了。解决方案是将映射变量作为值放入main
$colorsets
map中,就像映射数组一样:

$colorsets: () !default;
$colorsets: map-merge(
   (
       0:  $greys,
       1:  $reds // and so on
   ),
   $colorsets
);
显然,这应该在所有定义的颜色贴图之后出现。嵌套循环如下所示:

    @each $index, $colorset in $colorsets {
        /* #{$index} */
        @each $color-name, $color in $colorset {
            /* #{$color-name} #{$color} */
            // do stuff here
        }
    }
希望有人会觉得这个有用