Merge multiple Sass maps

牧云@^-^@ 提交于 2019-12-01 01:10:55

If map-merge takes 2 mappings and returns a single mapping, but you have 3 mappings... you use map-merge twice.

$color: map-merge(map-merge($color-name, $color-event), $color-category);

I realize this is a bit late, but since this was the only solution I could find while googling I want to post this for others looking for a similar solution.

I stumbled upon this question trying to find the same answer, and while @cimmanon's answer may work for your specific example of combining only 3 maps, it isn't a good solution if you wanted to combine, say 10 maps. I wanted a solution that could be applied to 3 maps or 50. So I wrote a function to handle merging multiple maps together:

@function map-collect($maps...) {
  $collection: ();

  @each $map in $maps {
    $collection: map-merge($collection, $map);
  }
  @return $collection;
}

And use it like so:

$colors: map-collect($color-name, $color-event, $color-category); 

Since this uses the map-merge function, SASS 3.3+ is required.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!