Изолировать вложенную карту 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;
}
}
}
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;
}