2015-01-02 92 views
1

我有三個我想合併成一個地圖的Sass地圖。有了地圖合併功能,我只能合併兩張地圖。我怎樣才能合併兩個以上的地圖?合併多個Sass地圖

縮短的我的情況例如:

$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); 

回答

1

如果地圖合併需要2點映射並返回一個映射,但你有3名映射...您使用地圖合併兩次。

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

我意識到這是一個有點晚了,但因爲這是唯一的解決辦法,而谷歌搜索我要發佈此爲別人尋找一個類似的解決方案,我可以找到。

我偶然發現了這個問題,試圖找到相同的答案,而@ 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

你好,很棒的功能。感謝分享!你把櫻桃放在蛋糕上;) –