Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Sass确定颜色是否为灰度?_Sass - Fatal编程技术网

如何使用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

使用Sass,是否可以确定颜色是否为灰度

比如:

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