SCSS / SASS从第n个嵌套映射中获取值

时间:2018-03-21 09:46:42

标签: sass nested nested-lists sass-maps

我在尝试检索嵌套sass映射中的值时遇到问题。我有一张如下所示的地图:

android:theme="@style/AppTheme.NoTitleBar"

我正在尝试检索第一个嵌套列表中的变量" xl"。我们的想法是通过索引检索嵌套列表,而不是通过键名检索嵌套列表,因为这应该能够修改为用户的喜好。

我原以为使用$breakpoints : ( xl: ( page-width: 1170px, gutter: 30px, base-font-size: 17px ), l: ( breakpoint: 1170px, page-width: 980px, gutter: 20px, base-font-size: 17px ) ); 会有效但map-get(nth($breakpoints, 1), page-width)似乎会返回一个包含" xl的字符串(页面宽度:1170px,gutter:30px,base-font-size :17px)"而不是实际的地图,因此nth($breakpoints, 1)功能无法使用。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:4)

您可以创建一个将数字索引转换为字符串键的函数:

@function index-to-key($index) {
  $keys: map-keys($breakpoints); // A list of all keys in a $breakpoints map

  @return nth($keys, $index);
}

然后调用此函数:

width: map-get(map-get($breakpoints, index-to-key(1)), page-width);

内部map-getxl返回地图$breakpoints,而外map-get返回按键page-width的值。

Sassmeister上的完整代码。
map-keys函数description