우선 @for
대신 @each
을 사용해야합니다.
둘째 루프에서 필요한 두 개의 변수 만 얻을 수 있습니다. 첫 번째 변수는 키이고 두 번째 변수는 값입니다.
세 번째로 sass 보간을 사용하여 변수를 클래스 이름에 포함하고 선택기에서 값을 unqote 할 수 있습니다. 나는 이것을 위해 unqote($color-value)
을 사용할 수도 있다고 생각합니다. 아니면 단순히 색상 값을 따옴표없이 배열에 쓸 수 있습니다.
아래 예를 참조하십시오.
$color-collection: ('white': '#FFFFFF', 'black': '#000000', 'goldenrod': '#F59600');
@each $color-name, $color-value in $color-collection {
.bg-color-#{$color-name} {
background-color: #{$color-value};
}
//create a variable for each color name, e.g. $white: #FFFFFF;
//create a class for each variable name with a style, e.g. .bg-color-white {background-color: $white;}
}
http://sassmeister.com/gist/e321b7e36ed0e74cd2ce
여기 libsass 사용하고 있기 때문에 나이가 말대꾸 구문과 함께 일하는 것이 몇 가지 코드입니다 :
$color-collection: ('white' '#FFFFFF'), ('black' '#000000'), ('goldenrod' '#F59600');
@each $color in $color-collection {
$color-name: nth($color, 1);
$color-value: nth($color, 2);
.bg-color-#{$color-name} {
background-color: #{$color-value};
}
}
유망 보이는
http://sassmeister.com/gist/28caaf9d5e644d5db0cc
하지만 정의 할 때 나는 배열을 얻을 $ color-collection 변수. 아마도 내 버전의 scss가이를 지원하지 않습니까? 어떤 버전을 사용하고 있는지 어떻게 알 수 있습니까? 나는 "gulp-sass"를 사용하고 있습니다 : "0.7.x"하지만 어떤 버전의 sass가 어떤 버전인지는 알지 못합니다. – asolberg
gulp-sass는 libsass를 사용합니다. libsass는 훨씬 빠르지 만 아직은 순열 어레이를 지원하지 않습니다 (아직). libsass에 대해 Sass 3.3 스펙 (이 어레이가 있음)을 얻기 위해 많은 작업이 이루어지고 있지만, 현재 그들은 3.2를 목표로하고 있습니다. "gulp-ruby-sass"를 사용할 수는 있지만 CSS를 렌더링하는 데 약간 느려질 수 있습니다. – KnutSv
gulp-sass를 계속 사용하려면 libsass와 작동하는 몇 가지 코드를 추가했습니다 – KnutSv