Только что с этим сталкивался, есть ответ для вас.В Sass вы можете иметь многомерный список, поэтому вместо создания отдельных переменных вы создадите одну переменную, которая будет содержать их все, а затем зациклите их:
$zoo: puma black, sea-slug green, egret brown, salamander red;
@each $animal in $zoo {
.#{nth($animal, 1)}-icon {
background-color: nth($animal, 2);
}
}
У вас могут быть многомерные списки, такие каку вас будут одномерные списки, если каждое вложенное измерение разделено по-разному (в нашем случае это запятые и пробелы).
ОБНОВЛЕНИЕ 24 октября 2013 г.
В Sass 3.3 появился новый тип данных под названием maps , которые представляют собой хэшированный набор элементов.С этим мы можем переписать мой предыдущий ответ следующим образом, чтобы он был намного более похож на желаемый результат:
$zoo: ("puma": black, "sea-slug": green, "egret": brown, "salamander": red);
@each $animal, $color in $zoo {
.#{$animal}-icon {
background-color: $color;
}
}
Вы можете увидеть это в действии на SassMeister