Sass 如何引用地图对象内部的特性

Sass 如何引用地图对象内部的特性,sass,maps,Sass,Maps,我有一个颜色地图,并希望根据地图中先前定义的颜色在地图中定义后续颜色 $colors: ( primary: #184770, secondary: #0969A2, white: #fff, black: #000, green: #24b206, blue: #428bca, purple: #813c8e, grey: (lighten( black, 25%)), grey-light: (light

我有一个颜色地图,并希望根据地图中先前定义的颜色在地图中定义后续颜色

$colors: (
    primary: #184770, 
    secondary: #0969A2, 
    white: #fff, 
    black: #000, 
    green: #24b206, 
    blue: #428bca, 
    purple: #813c8e, 
    grey: (lighten( black, 25%)), 
    grey-light: (lighten( black, 35%)), 
    grey-dark: (lighten( black, 15%))      
);
我想基于
map get($colors,black)
指定
grey
grey light
grey dark

上面的示例之所以有效,是因为它引用的是固有颜色“黑色”,而不是
map get($colors,black)


可以引用同一地图对象内的属性吗

否,不能在同一地图对象内引用地图的属性。在到达分号之前,地图不会真正定义,因此在此点之前,地图自身的属性无法引用。这里有一个类似的例子

如果要基于最初定义的值添加后续值,则一个路由具有
map get
map merge
功能的组合:

$base-colors: ( 
  black: #000
);

$extended-colors: (
  grey:       lighten(map-get($base-colors, black), 25%),
  grey-light: lighten(map-get($base-colors, black), 35%),
  grey-dark:  lighten(map-get($base-colors, black), 15%)
);

$colors: map-merge($base-colors, $extended-colors);
注:
地图合并
执行浅合并,最适合平面一维地图;如果要合并更深层次的多维贴图,可能需要定义并使用而不是
贴图合并