根據維基百科,當轉換爲亮度的灰度表示時,「必須獲得其紅色,綠色和藍色的值」並將它們按下一個比例混合: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