Zaczynamy od deklaracji kolorów które będą nam potrzebne w projekcie.
$colors: (
grey: (
base: #4d4e55,
light: #c8c8ce
),
yellow: (
base: #ffae00
),
green: (
base: #00ff15
)
);
Oczywiście nic nie stoi na przeszkodzie aby modyfikować naszą deklarację dodając następne nazwy kolorów light, lighter, lightest, dark, darker, darkest
Mniej więcej wyglądało by tak.
$colors: (
grey: (
base: #4d4e55,
light: xxxx,
lighter: xxxx,
lightest: xxxx,
dark: xxxx
darker: xxxx
darkest: xxxx
),
yellow: (
base: #ffae00
),
green: (
base: #00ff15
)
);
Teraz czas na @mixin trochę przerażająco wygląda 😉
@mixin color-modifiers($attribute: 'color', $prefix: '-', $separator: '-', $base: 'base') {
@each $name, $color in $colors {
&#{$prefix}#{$name} {
@each $tone, $hex in $color {
&#{if($tone != $base, #{$separator}#{$tone}, '')} {
#{$attribute}: $hex;
}
}
}
}
}
A użycie jest dość oczywiste 😉
.text {
@include color-modifiers;
}
Wynik naszego kodu to zestaw czterech klas które zareklamowaliśmy powyżej.
.text-grey { color:#4d4e55 }
.text-grey-light { color:#c8c8ce }
.text-yellow { color:#ffae00 }
.text-green { color:#00ff15 }