热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

合并多个Sass地图

如何解决《合并多个Sass地图》经验,为你挑选了1个好方法。

我有三张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+.


推荐阅读
author-avatar
诚实的愛是最棒的_977_415_874
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有