【发布时间】:2011-06-11 05:06:02
【问题描述】:
我正在寻找一种方法,最好使用 jQuery,根据背景颜色的亮度确定正确的文本颜色?
例如白色背景,黑色文字颜色。我相信这可以通过添加 HEX 值和猜测来粗略地完成,但有人知道更好的方法或 jQuery 方法吗?
【问题讨论】:
-
灰色 (#808080) 呢?
标签: javascript jquery colors hex
我正在寻找一种方法,最好使用 jQuery,根据背景颜色的亮度确定正确的文本颜色?
例如白色背景,黑色文字颜色。我相信这可以通过添加 HEX 值和猜测来粗略地完成,但有人知道更好的方法或 jQuery 方法吗?
【问题讨论】:
标签: javascript jquery colors hex
您可以尝试反转颜色的十六进制值。所以#FFFFFF变成#000000和#AAAAAA变成#555555。当然,当你有 #888888 时,这个方法就会失败,当你倒置时,会给你 #777777(它们没有那么大的对比)。
这个blog post 描述了另一种方式(他们只使用黑色或白色作为前景色,具体取决于背景色)。我已将其翻译成 Javascript:
function idealTextColor(bgColor) {
var nThreshold = 105;
var components = getRGBComponents(bgColor);
var bgDelta = (components.R * 0.299) + (components.G * 0.587) + (components.B * 0.114);
return ((255 - bgDelta) < nThreshold) ? "#000000" : "#ffffff";
}
function getRGBComponents(color) {
var r = color.substring(1, 3);
var g = color.substring(3, 5);
var b = color.substring(5, 7);
return {
R: parseInt(r, 16),
G: parseInt(g, 16),
B: parseInt(b, 16)
};
}
【讨论】:
bg改成components,把int改成var,getRGBComponents用分号代替逗号。