我正在与Stylus合作,CSS的预处理器,我想要一个功能来调整颜色的“感知亮度”,比如说,20%或-10%。
我发现了“亮度”这个术语,看起来Stylus有一个函数可以让得到颜色的亮度,但是不能调节颜色的亮度。
如何创建这样的函数呢?
发布于 2016-08-02 22:30:23
经过一番修修补补后,这个似乎行得通。但我不确定它是否100%正确。
adjust-luminance($color, $amount = 10%)
$scale = unit($amount, '') / 100 * 255
//green is the lightest component, followed by red, then blue.
$redWeight = 0.2126
$greenWeight = 0.7152
$blueWeight = 0.0722
// get the individual components of the color
$red = red($color)
$green = green($color)
$blue = blue($color)
//get percent
$percentRed = $red / 255
$percentGreen = $green / 255
$percentBlue = $blue / 255
$lumRed = $percentRed * $redWeight
$lumGreen = $percentGreen * $greenWeight
$lumBlue = $percentBlue * $blueWeight
$lumTotal = 1 + ($lumRed + $lumGreen + $lumBlue)
$red += $scale * (1 - $redWeight) * $lumTotal
$green += $scale * (1 - $greenWeight) * $lumTotal
$blue += $scale * (1 - $blueWeight) * $lumTotal
$adjusted = rgb($red, $green, $blue)
$adjusted = saturation($adjusted, saturation($color))
return $adjustedhttps://stackoverflow.com/questions/38730484
复制相似问题