有没有一种方法可以检查表示颜色的两个字符串是否相等,它们是十六进制,rgb,rgba还是字形。

例如,这些将相等

“红色”和“#ff0000”
“红色”和“#f00”
“红色”和“rgb(255,0,0)”
“#ff0000”和“rgba(255,0,0,255)”

我要尝试的是如果两个或多个元素的颜色相同,则将它们连接在一起,但是有时颜​​色表示的方式有所不同。

我当时正在检查element.style.color的字符串相等性,但是后来遇到了这个问题。使用其他方法会更好吗?

一个附带的问题,出于好奇,对于所有颜色,一个浏览器的“深蓝色” rgb值是否等于另一个浏览器的“深蓝色” rgb值?

最佳答案

您可以使用微小的颜色

https://bgrins.github.io/TinyColor/

https://bgrins.github.io/TinyColor/tinycolor.js

您只需要传递颜色名称,它将以十六进制,rgb等返回颜色名称。

var tiny = tinycolor(color);
var hexString=  tiny.toHexString();
var hex8String=  tiny. tiny.toHex8String();

还有其他类似的方法
tiny.toRgbString()
tiny.toHslString()
tiny.toHsvString()
tiny.toName()
tiny.getFormat()

一旦获得所有格式,就可以使用字符串相等进行比较。
请检查上面链接给出的演示。

还有一种比较颜色的方法
tinycolor.equals(color1, color2)

09-30 10:25