作者:诚实的愛是最棒的_977_415_874 | 来源:互联网 | 2023-05-28 17:37
我有三张Sass地图,我想合并到一张地图中.使用map-merge函数,我只能将两个映射合并在一起.如何合并两张以上的地图?
我的情况的一个缩短的例子:
$color-name: (
blue: (
default: blue,
dark: navy,
light: sky
)
);
$color-event: (
danger: (
default: set($color-name, red),
dark: set($color-name, red, dark),
light: set($color-name, red, light),
)
);
$color-category: (
heading: (
default: set($color-name, grey),
dark: set($color-name, grey, dark),
light: set($color-name, grey, light)
)
);
$color: map-merge($color-name, $color-event, $color-category);
biggles..
12
我意识到这有点晚了,但由于这是我在google搜索时能找到的唯一解决方案,我想将其发布给寻找类似解决方案的其他人.
我偶然发现这个问题试图找到相同的答案,虽然@ cimmanon的答案可能适用于仅合并3个地图的具体例子,但如果你想要合并,比如10个地图,这不是一个好的解决方案.我想要一个可以应用于3个地图或50的解决方案.所以我编写了一个函数来处理将多个地图合并在一起:
@function map-collect($maps...) {
$collection: ();
@each $map in $maps {
$collection: map-merge($collection, $map);
}
@return $collection;
}
并像这样使用它:
$colors: map-collect($color-name, $color-event, $color-category);
由于这使用该map-merge
功能,因此需要SASS 3.3+.
1> biggles..:
我意识到这有点晚了,但由于这是我在google搜索时能找到的唯一解决方案,我想将其发布给寻找类似解决方案的其他人.
我偶然发现这个问题试图找到相同的答案,虽然@ cimmanon的答案可能适用于仅合并3个地图的具体例子,但如果你想要合并,比如10个地图,这不是一个好的解决方案.我想要一个可以应用于3个地图或50的解决方案.所以我编写了一个函数来处理将多个地图合并在一起:
@function map-collect($maps...) {
$collection: ();
@each $map in $maps {
$collection: map-merge($collection, $map);
}
@return $collection;
}
并像这样使用它:
$colors: map-collect($color-name, $color-event, $color-category);
由于这使用该map-merge
功能,因此需要SASS 3.3+.