有没有一种方法可以检查表示颜色的两个字符串是否相等,它们是十六进制,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)