根据维基百科,当转换为亮度的灰度表示时,“必须获得其红色,绿色和蓝色的值”并将它们按下一个比例混合:R:30%G:59%B:11%
因此,白色将具有100%的亮度,而黄色将具有89%。与此同时,绿色只有59%。 11%几乎比41%的差距低四倍!
甚至石灰(#00ff00
)不适合阅读大量的文本。
恕我直言,对于良好的对比度颜色的亮度应该至少有50%不同。这个亮度应该转换成灰度来测量。
UPD:最近发现了一个comprehensive tool网络 其中,为了使用从w3 document 的阈值公式可以从#1.4 可以采取下面是该更先进的东西的实现。
function luminanace(r, g, b) {
var a = [r, g, b].map(function (v) {
v /= 255;
return v <= 0.03928
? v/12.92
: Math.pow((v + 0.055)/1.055, 2.4);
});
return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
}
function contrast(rgb1, rgb2) {
return (luminanace(rgb1[0], rgb1[1], rgb1[2]) + 0.05)
/(luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05);
}
contrast([255, 255, 255], [255, 255, 0]); // 1.074 for yellow
contrast([255, 255, 255], [0, 0, 255]); // 8.592 for blue
// minimal recommended contrast ratio is 4.5, or 3 for larger font-sizes
所以用户可以任意选择两种颜色,只要它们是可读的对比? – DanRedux 2012-03-16 07:13:25
从技术的角度来看,我觉得这很有趣,但更实际的是,如果用户有选择任何颜色的“正确”,为什么你甚至在乎它是否可以读取?他们没有把它做好吗? – nnnnnn 2012-03-16 07:19:05
@nnnnnn我并不在乎他们选择什么颜色,他们可以混合他们想要的任何东西,但我关心(c)2012年公司的可读性。 – 2012-03-16 07:42:54