Scss/Sass지도에서 단일 값을 가진 각 키에 대한 클래스 목록을 생성하는 방법은 무엇입니까? 예를 들어Scss/Sass 중첩지도에서 클래스 생성
이 SCSS지도에서 (무시는 명명 규칙,이 다양한 목적의 많은지도에 사용되는 중첩되어) :
(Codepen를 참조하십시오! http://codepen.io/harlanlewis/pen/emWVrr (감사 cimmanon가))
$palette: (
brown: hsl(33,35,50),
blue: hsl(207,80,50),
green: (
0: hsl(157,65,65),
1: hsl(157,50,50),
alt: (
0: hsl(125,65,65),
),
),
red: (
0: hsl(0,60,50),
alt: (
0: hsl(0,100,50),
),
),
yellow: (
0: hsl(50,100,60),
1: hsl(50,100,100),
),
};
-
@mixin map-to-class($map, $selector: '', $property: '') {
$selector: if($selector == '' and &, &, $selector);
@each $key, $value in $map {
@if type-of($value) == map {
$selector: selector-append($selector, #{$key});
@include map-to-class($value, $selector, $property) {
@content;
}
} @else {
@at-root #{$selector}#{$key} {
#{$property}: $value;
};
};
};
};
@include map-to-class($palette, '.u-fg__', 'color')
... 원하는 클래스를 생성 :
.u-fg__brown { color: hsl(33,35,50) }
.u-fg__blue { color: hsl(207,80,50) }
.u-fg__green0 { color: hsl(157,65,65) }
.u-fg__green1 { color: hsl(157,50,50) }
.u-fg__greenalt0 { color: hsl(125,65,65) }
.u-fg__red0 { color: hsl(0,60,50) }
.u-fg__redalt0 { color: hsl(0,100,50) }
.u-fg__yellow0 { color: hsl(50,100,60) }
.u-fg__yellow1 { color: hsl(50,100,80) }
실제 (잘못된) 생성 된 클래스는 다음과 같습니다은 무엇 당신이 찾고있는 것은 재귀 믹스 인이다
... (brown, blue, and green are fine) ...
.u-fg__green0 { color: hsl(157,65,65) }
.u-fg__green1 { color: hsl(157,50,50) }
.u-fg__greenalt0 { color: hsl(125,65,65) }
.u-fg__greenred0 { color: hsl(0,60,50) }
.u-fg__greenredalt0 { color: hsl(0,100,50) }
.u-fg__greenredyellow0 { color: hsl(50,100,60) }
.u-fg__greenredyellow1 { color: hsl(50,100,80) }
여기에 질문이 있습니까? 시도해 봤어? – cimmanon
map-get-deep 함수에서 작업 해 보았습니다.하지만 지저분합니다. 다른 방법을 추천 해 줄 수 있기를 바랍니다. 고맙습니다! – user843328