map
私の目標は、次のマップに格納されている色のバリエーションを格納する SASS を生成することです。
$colors : (
jet : #333333,
wintergreen-dream : #588C73,
eton-blue : #8FC0A9,
sunglow : #FFC33C,
light-kaki : #F2E394,
bege : #FAF3DD
);
これまでのところ、@function
これらのバリアントを取得するために を使用しています。
@function light ($color, $val) { @return lighten($color, $val); }
@function dark ($color, $val) { @return darken($color, $val); }
@function transparent ($color, $val) { @return transparent($color, $val); }
生成できると期待しているマップは、次のようになります。
$colors-map : (
eton-blue : (
base : $eton-blue,
light : lighten($eton-blue, 15%),
dark : darken($eton-blue, 15%),
trans : transparent($eton-blue, .5)
),
jet : (
base : $jet,
light : lighten($jet, 15%),
dark : darken($jet, 15%),
trans : transparent($jet, .5)
)
// ...
);
それでも、すでに適用しようとしたループは次のようになります。
@for $key, $value in $colors {}
しかし、私はそれがマップ自体の中で機能すると信じていませんでした。
この疑問に答えやすい質問:
- SASS マップ (関数) (キー:値) に値を追加する方法は?
map-merge
/map-set
?の基本的な使い方 (@return map-merge($map, $new)
)
厳密に私が以下に探しているもの:
$alternative-colors : (
@each $color, $hex in $colors {
#{$color} : (
light : lighten($color, 25%),
dark : darken($color, 25%)
);
}
);
それでも、次のエラーが返されます。
Error: Invalid CSS after \"...tive-colors : (\": expected \")\", was \"@each (...)
結論
長い時間が経ちましたが、私の解決策を他の人と共有できれば幸いです.
この問題解決の結果を保存するリポジトリhttps://github.com/vladimirlisovets/SASS-Color-Palettesを作成しました。
より良いものを刺激するために誰かに役立つことを願っています.
乾杯。