javascript 如何自动确定与白色相似的颜色?

inb24sb2  于 2023-02-18  发布在  Java
关注(0)|答案(3)|浏览(235)

我正在寻找一个十六进制代码格式的颜色列表或某些模式的十六进制代码是白色的颜色/阴影的白色。
我一直在使用Wikipedia Shades of White列表,但我不认为它是完整的,理想情况下,我希望有一些白色的正则表达式模式。
我对颜色不是很了解,所以请原谅我,如果这是一个无知的问题。

wnavrhmk

wnavrhmk1#

也许这个功能能对你有所帮助?
它所做的是测试该值是否为白色(r/g/b值大于200)。如果#FFBBEE中提供的任何rgb值计算出的数值小于200,则测试失败。
这是一个非常非常粗糙的测试,但是由于你缺乏你真正想要的细节,这可能是一个很好的起点。至少这个函数给了你将它转换成整数值的方法,你可以再次使用它来计算一个更好的格式,如HSL,这将允许你做更好的亮度检查。如果你想去那个方向,看看这个答案
其他答案解释了什么是RGB,以及如何将其组合到您使用的颜色代码中,特别是user1203738的答案

function isWhite(str) {
    // fiddle this value to set stricter rules for what is white.
    var whiteLimit = 200, 
        r,g,b;
    
    r = parseInt("0x"+str.substring(1,3));
    g = parseInt("0x"+str.substring(3,5));
    b = parseInt("0x"+str.substring(5,7));
    if(r < whiteLimit || b < whiteLimit || g < whiteLimit) {
        return false;
    } 
    return true;    
}
// use this function like this. supply it a colour code with a # in front of it
isWhite("#FFFFFF");
<input type="text" value="#FFFFFF" id="colorcode">
<input type="button" value="test if this is white" onclick="document.getElementById('showcolor').style.backgroundColor = document.getElementById('colorcode').value;document.getElementById('showcolor').innerText='Shade of white:'+isWhite(document.getElementById('colorcode').value);">
<div id="showcolor" style="display:block;width:200px;height:200px;margin:50px;border 1px solid black;background-color:#AAA"></div>
4dc9hkyq

4dc9hkyq2#

hexcodes代表红色,绿色和蓝色的混合光。#FFFFFF转换为白色,FF红色,FF绿色和FF蓝色。您可以将十六进制FF值转换回255,
把它想象成你有三盏彩灯;红色,绿色和蓝色。你要把这些灯混合在一起。十六进制值决定了每盏灯的亮度。

  • #000000为黑色。没有灯打开。
  • #FF0000为全红色,只有红灯亮。
  • #FFFF00会给予你黄色。红色和绿色灯打开(并结合成黄色)
  • #FFFFFF会给予你一个白色的。所有的灯都亮着,
  • #AAAAAA会给予你一个灰色的颜色,所有的灯都亮着,但有点暗。
  • #FFFFF0会给予你黄白色的颜色,所有的灯都亮着,但是蓝色缺少一些强度。

我建议您尝试一下color picker,看看更改这些值意味着什么。
发白的颜色/白色的深浅是非常广泛的,正如klaar在评论中提到的,你应该定义什么是白色。
通常,相互接近且高于200“强度”的红色、绿色和蓝色值将显示为发白。
将RGB值转换为HSL可能会更容易(这超出了本问题的范围)。由于H(ue)值无关紧要,因此S(饱和度)应该较低(没有颜色)。L(光/亮度)值应该较高,以便显示白色。

de90aj5v

de90aj5v3#

这不会是完美的,但它可能会让你接近:
步骤1:Convert the color name to RGB hex
第2步:检查红色、绿色和蓝色十六进制值的 each 的第一个字符是否为e或f。这可以作为正则表达式完成,例如:
/^#([ef][a-f0-9]){3}$/i
有关白色阴影的更多示例,请参阅另请参阅Encycolorpedia。这个问题与平面设计社区更相关。

相关问题