Ste*_*eve 3 css dictionary loops sass
我有一个很长的 sass 地图,作为一个片段是(Codepen 中的完整代码):
$pbcolors: (
pbcyan : (
50: #E5F5FC,
100: #CCEBF9,
200: #99D7F2,
300: #66C3EC,
400: #33AFE5,
500: #009DBF,
600: #008CAB,
700: #007C98,
800: #006D85,
900: #005D72
),
pbmediumblue: (
50: #E5F1F8,
100: #CCE3F1,
200: #99C7E3,
300: #66AAD4,
400: #338EC6,
500: #0072B8,
600: #0065A5,
700: #005A93,
800: #004F80,
900: #00436E
),
pbpurple: (
50: #F5ECF5,
100: #ECD9EB,
200: #D9B2D7,
300: #C68CC3,
400: #B365AF,
500: #A03F9B,
600: #90388B,
700: #80327C,
800: #702C6C,
900: #60255D
);
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个循环来创建一系列以颜色和阴影命名的类,其中背景颜色为十六进制,如下所示
.bg-pbmediumblue-100 { background: #CCE3F1; }
Run Code Online (Sandbox Code Playgroud)
然而,我的语法必须被破坏,因为我没有跳到第二级:
@each $item, $color in $pbcolors {
@each $shade, $value in $item {
.bg-#{$shade}-#{$shade} {
background-color: map-get(map-get($pbcolors, $item), 50);
}
}
}
Run Code Online (Sandbox Code Playgroud)
由此我只得到每种颜色的 50 个,以及错误的类名:
.bg-pbcyan-pbcyan {
background-color: #E5F5FC;
}
.bg-pbmediumblue-pbmediumblue {
background-color: #E5F1F8;
}
Run Code Online (Sandbox Code Playgroud)
我搞砸了什么?
您引用了错误的变量。变量$item(第一个)引用映射键名称,而不是值(第二个)。您需要迭代内部循环中的值。
@each $item, $color in $pbcolors {
@each $shade, $value in $color {
.bg-#{$item}-#{$shade} {
background-color: $value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6208 次 |
| 最近记录: |