Zowel lighten
en darken
functies manipuleren van de lichtheid van een kleur in de HSL-ruimte door het toevoegen of aftrekken lichtheid aan. In feite zijn het niets anders dan aliassen voor de $lightness
parameter van de adjust-color
functie.
Het punt is dat die functies vaak niet het verwachte resultaat opleveren. Aan de andere kant is de mix
functie een leuke manier om een kleur lichter of donkerder te maken door deze te mengen met wit of zwart.
Het voordeel van het gebruik van in mix
plaats van een van de twee bovengenoemde functies is dat het geleidelijk naar zwart (of wit) gaat naarmate u het aandeel van de kleur verkleint, terwijl darken
en lighten
snel een kleur helemaal naar zwart of wit uitblaast.
Om te voorkomen dat je de mixin-functie elke keer moet schrijven, wat niet alleen tijdrovend maar ook niet helemaal expliciet is, kun je eenvoudig twee functies maken tint
en shade
(die toevallig ook deel uitmaken van 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); )
Gebruik
.foo ( color: tint(#BADA55, 42%); ) .bar ( background-color: shade(#663399, 42%); )
.foo ( color: #e2efb7; ) .bar ( background-color: #2a1540; )