我有一个需要嵌入各种网站的iframe,并根据网站文字颜色应用了2个样式表(浅色和深色)。此时,我以这种方式应用样式表:
但显然这并不总是有效。
所以我需要找到一种更好的算法来将深色和浅色分开。我知道这永远不会100%准确,但至少我需要的东西比我的解决方案更好。
有什么想法吗?
谢谢!
coffeescript代码:
calculateTheme = (hexcol)->
if (parseInt(hexcol, 16) > 0xffffff/2)
return "dark"
else
return "light"
答案 0 :(得分:1)
我原本以为问题的一部分在于RGB颜色有3个元素并且可以变暗或变亮,以制作麦克风。
即:#FF0000为红色,但随着值减小,它接近暗红色,#EE0000
同样的原则适用于其他2个组件。我建议构建算法,在其中提取所有3个组件然后进行测试,然后查看它们与00的接近程度。
来源:http://www.rapidtables.com/web/color/RGB_Color.htm
编辑:This article似乎是一个很好的信息来源。
答案 1 :(得分:0)
检查以下代码是否有效
function getNumberRange(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function getRandomHexColor() {
var result = "0x";
for (var i = 0; i < 6; i++) {
result += getNumberRange(0, 15).toString(16);
}
return result;
}
var colorVal = getRandomHexColor();
if (colorVal > 0xffffff / 2) {
alert(colorVal + " : is light");
} else {
alert(colorVal + " : is dark");
}