如何使用Sass确定颜色是否为灰度?
使用Sass,是否可以确定颜色是否为灰度 比如:如何使用Sass确定颜色是否为灰度?,sass,Sass,使用Sass,是否可以确定颜色是否为灰度 比如: is-greyscale(#ffffff); // returns true 我可以看到在Sass中将颜色转换为灰度是可能的,但我不确定如何利用它来确定给定颜色是否为灰度。结果令人惊讶的是,这非常简单,我在发布了以下问题后立即找到了答案: @function is-grayscale($color) { @return if(grayscale($color) == $color, true, false); } @debug is-gr
is-greyscale(#ffffff); // returns true
我可以看到在Sass中将颜色转换为灰度是可能的,但我不确定如何利用它来确定给定颜色是否为灰度。结果令人惊讶的是,这非常简单,我在发布了以下问题后立即找到了答案:
@function is-grayscale($color) {
@return if(grayscale($color) == $color, true, false);
}
@debug is-grayscale(white); // returns true
@debug is-grayscale(blue); // returns false
如果颜色为100%灰度,则上述逻辑是正确的,但是有许多颜色“几乎”为灰度,例如
#DEDED9
下面的函数测量颜色的饱和度,如果结果小于8%,则认为颜色为灰度
例如:
@debug color.saturation(#DEDED9); // returns => 7.0422535211%
@debug color.saturation(#E2E2D5); // returns => 18.3098591549%
职能:
@function is-color-grayscale($color){
$saturation: color.saturation($color);
@if ($saturation < 8%) {
@return true;
} @else{
@return false;
}
}
我可以问你这个功能的用法吗?我有点好奇。:)我有一张包含各种颜色的地图。对于每种颜色,我想创建一个类作为按钮修改器。该类将更改按钮的背景。如果按钮不是灰度的,我总是希望按钮的文本颜色为白色。如果按钮是灰度的,根据背景的亮度,我希望文本是白色的,或者是灰色的,如果有意义的话。是的。谢谢你的解释,很有趣!这太棒了!实际上,我的用例也需要这样做(我之前手动向包含颜色值的贴图添加一个键,指定是否应将其视为灰度,这样更好)
@debug is-color-grayscale(#DEDED9); // returns => true
@debug is-color-grayscale(#E2E2D5); // returns => false