Både lighten
og darken
funksjoner manipulerer lysstyrken til en farge i HSL-rommet ved å legge til eller trekke lysstyrke fra den. I utgangspunktet er de ikke annet enn aliaser for $lightness
parameteren til adjust-color
funksjonen.
Saken er at disse funksjonene ofte ikke gir det forventede resultatet. På den annen side er mix
funksjonen en fin måte å gjøre en farge lysere eller mørkere ved å blande den med enten hvit eller svart.
Fordelen med å bruke i mix
stedet for en av de to nevnte funksjonene er at den gradvis vil gå til svart (eller hvitt) når du reduserer andelen av fargen, mens darken
og lighten
raskt vil blåse ut en farge helt til svart eller hvit.
For å unngå å skrive mixin-funksjonen hver gang, som ikke bare er tidkrevende, men ikke helt eksplisitt, kan du enkelt opprette to funksjoner tint
og shade
(som også tilfeldigvis er en del av Compass):
/// Slightly lighten a color /// @access public /// @param (Color) $color - color to tint /// @param (Number) $percentage - percentage of `$color` in returned color /// @return (Color) @function tint($color, $percentage) ( @return mix(white, $color, $percentage); ) /// Slightly darken a color /// @access public /// @param (Color) $color - color to shade /// @param (Number) $percentage - percentage of `$color` in returned color /// @return (Color) @function shade($color, $percentage) ( @return mix(black, $color, $percentage); )
Bruk
.foo ( color: tint(#BADA55, 42%); ) .bar ( background-color: shade(#663399, 42%); )
.foo ( color: #e2efb7; ) .bar ( background-color: #2a1540; )