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

The*_*oth 3 nested sass nested-lists sass-maps

我在尝试检索嵌套 sass 映射中的值时遇到问题。我有一张看起来像这样的地图:

$breakpoints : (
    xl: (
         page-width: 1170px,
         gutter: 30px,
         base-font-size: 17px
    ),
    l: (
         breakpoint: 1170px,
         page-width: 980px,
         gutter: 20px,
         base-font-size: 17px
    )
);
Run Code Online (Sandbox Code Playgroud)

我试图在第一个嵌套列表“xl”中检索变量。这个想法是通过索引而不是键名来检索嵌套列表,因为这应该能够根据用户的喜好进行修改。

我原以为使用map-get(nth($breakpoints, 1), page-width)会起作用,但nth($breakpoints, 1)似乎返回一个包含“xl(页面宽度:1170px,装订线:30px,base-font-size:17px)”而不是实际地图的字符串,因此无法使用该map-get()功能.

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

3rd*_*cal 5

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

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

  @return nth($keys, $index);
}
Run Code Online (Sandbox Code Playgroud)

然后调用这个函数:

width: map-get(map-get($breakpoints, index-to-key(1)), page-width);
Run Code Online (Sandbox Code Playgroud)

其中 innermap-get返回 map xlfrom$breakpoints和 outermap-get返回 value by key page-width


Sassmeister上的完整代码。
map-keys功能说明