Изолировать вложенную карту sass в новую карту

Как я могу изолировать вложенную карту sass в новую карту? Например, у меня есть такая карта sass:

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

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

  l: (
    'columns': 12,
    'gutters': 30px,
  )
);

Затем мне нужно изолировать каждую карту внутри после цикла, потому что мой другой миксин нуждается в карте для своего параметра.

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

person Nizamil Putra    schedule 08.06.2017    source источник


Ответы (1)


Чтобы ответить на ваш основной вопрос, вам нужно получить в цикле и ключ, и значение: @each $size, $setting in $susy-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;
}
person Miriam Suzanne    schedule 08.06.2017
comment
Наконец-то ты здесь, Мириам :). Я думаю, нам нужно перейти к сути, потому что мой код все еще не работает. Извиняюсь. - person Nizamil Putra; 09.06.2017
comment
Похоже, я не получаю уведомления от Gist. Можете ли вы опубликовать ссылку здесь? - person Miriam Suzanne; 12.06.2017
comment
Конечно. Вот ссылка gist.github.com/mirisuzanne/9b5ca9df6642173e20058853031b8d88 - person Nizamil Putra; 12.06.2017