I know already you can't text interpolate a variable name, which is unfortunate. But I look at this huge block in my scss file and wonder if there is any way to shorten this with a for loop...
#chord1 {
.color1 {
color: map-get($chord1, color1);
fill: map-get($chord1, color1);
}
.color2 {
color: map-get($chord1, color2);
fill: map-get($chord1, color2);
}
.color3 {
color: map-get($chord1, color3);
fill: map-get($chord1, color3);
}
.color4 {
color: map-get($chord1, color4);
fill: map-get($chord1, color4);
}
.color5 {
color: map-get($chord1, color5);
fill: map-get($chord1, color5);
}
.color6 {
color: map-get($chord1, color6);
fill: map-get($chord1, color6);
}
}
#chord2 {
.color1 {
color: map-get($chord2, color1);
fill: map-get($chord2, color1);
}
.color2 {
color: map-get($chord2, color2);
fill: map-get($chord2, color2);
}
.color3 {
color: map-get($chord2, color3);
fill: map-get($chord2, color3);
}
.color4 {
color: map-get($chord2, color4);
fill: map-get($chord2, color4);
}
.color5 {
color: map-get($chord2, color5);
fill: map-get($chord2, color5);
}
.color6 {
color: map-get($chord2, color6);
fill: map-get($chord2, color6);
}
}
#chord3 {
.color1 {
color: map-get($chord3, color1);
fill: map-get($chord3, color1);
}
.color2 {
color: map-get($chord3, color2);
fill: map-get($chord3, color2);
}
.color3 {
color: map-get($chord3, color3);
fill: map-get($chord3, color3);
}
.color4 {
color: map-get($chord3, color4);
fill: map-get($chord3, color4);
}
.color5 {
color: map-get($chord3, color5);
fill: map-get($chord3, color5);
}
.color6 {
color: map-get($chord3, color6);
fill: map-get($chord3, color6);
}
}
when my map is this:
$chord1: (color1:blue, color2: purple, color3: #eee, color4: teal, color5: green, color6: gray);
$chord2: (color1:orange, color2: magenta, color3: gray, color4: yellow,color5: green, color6: gray);
$chord3: (color1:green , color2: blue, color3: gray, color4: blue,color5: green, color6: gray);
If it wasn't for the variable interpolation issue I could get this scss down to two nested for
loops, similar to this:
$spacers: (xs: 10px,sm: 20px, md: 30px, lg: 40px, xl: 50px);
$directions: (top, bottom);
// usage "spacer-top-sm"
@each $direction in $directions {
@each $spacer, $amt in $spacers {
.spacer-#{$direction}-#{$spacer} {
margin-#{$direction}: $amt;
}
}
}
But it doesn't seem like "trick" can work here, due to the map-get
wanting the actual variable.