将嵌套的sass映射隔离到新映射中

将嵌套的sass映射隔离到新映射中,sass,susy,sass-maps,Sass,Susy,Sass Maps,如何将嵌套的sass映射隔离到新映射中?例如,我有这样的sass映射: $susy-setting: ( s: ( 'columns': 4, 'gutters': 30px, ), m: ( 'columns': 8, 'gutters': 30px, ), l: ( 'columns': 12, 'gutters': 30px, ) ); 然后我需要在循环之后隔离内部的每个映射,因为我的另一个mixin需要映射作为

如何将嵌套的sass映射隔离到新映射中?例如,我有这样的sass映射:

$susy-setting: (
  s: (
    'columns': 4,
    'gutters': 30px,
  ),

  m: (
    'columns': 8,
    'gutters': 30px,
  ),

  l: (
    'columns': 12,
    'gutters': 30px,
  )
);
然后我需要在循环之后隔离内部的每个映射,因为我的另一个mixin需要映射作为它的参数

@each $setting in $susy-setting{
    @include susy-settings-block($setting) { // This mixin need map
        @for $i from 1 through map-get($setting, 'columns') {
            @content;
        }
    }
}

要回答主要问题,您需要在循环中同时获取键和值:
@each$size,$susy setting中的$setting
$size
变量将存储键(例如
s
m
l
),而
$setting
变量将存储分配给该键的映射值

编辑:我看到你对我的要点的评论,这提供了更多的上下文。试试这个:

@mixin susy-settings-block(
  $name, 
  $config: $susy-settings
) {
  // store the old settings
  $global: $susy;

  // Get the new settings by name
  $new: map-get($config, $name);

  // apply the new settings
  $susy: map-merge($susy, $new) !global;

  // allow nested styles, using new settings
  @content;

  // return to the initial settings
  $susy: $global !global;
}

你终于来了,米里亚姆:)。我想我们必须转向gist,因为我的代码仍然不起作用。对不起,我好像没有收到Gist的通知。你能把链接贴在这里吗?当然可以。这里是链接