गेसक के जवाब के आधार पर , और WAVE ब्राउज़र एक्सटेंशन के साथ @ WebSeed के उदाहरण का विश्लेषण करने के बाद , मैं निम्नलिखित संस्करण के साथ आया हूं जो विपरीत अनुपात के आधार पर काले या सफेद पाठ को चुनता है (जैसा कि W3C की वेब सामग्री पहुंच दिशानिर्देश (WCAG) 2.1 में परिभाषित है ) ल्यूमिनेन्स के बजाय।
यह कोड है (जावास्क्रिप्ट में):
// As defined in WCAG 2.1
var relativeLuminance = function (R8bit, G8bit, B8bit) {
var RsRGB = R8bit / 255.0;
var GsRGB = G8bit / 255.0;
var BsRGB = B8bit / 255.0;
var R = (RsRGB <= 0.03928) ? RsRGB / 12.92 : Math.pow((RsRGB + 0.055) / 1.055, 2.4);
var G = (GsRGB <= 0.03928) ? GsRGB / 12.92 : Math.pow((GsRGB + 0.055) / 1.055, 2.4);
var B = (BsRGB <= 0.03928) ? BsRGB / 12.92 : Math.pow((BsRGB + 0.055) / 1.055, 2.4);
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
};
var blackContrast = function(r, g, b) {
var L = relativeLuminance(r, g, b);
return (L + 0.05) / 0.05;
};
var whiteContrast = function(r, g, b) {
var L = relativeLuminance(r, g, b);
return 1.05 / (L + 0.05);
};
// If both options satisfy AAA criterion (at least 7:1 contrast), use preference
// else, use higher contrast (white breaks tie)
var chooseFGcolor = function(r, g, b, prefer = 'white') {
var Cb = blackContrast(r, g, b);
var Cw = whiteContrast(r, g, b);
if(Cb >= 7.0 && Cw >= 7.0) return prefer;
else return (Cb > Cw) ? 'black' : 'white';
};
एक कार्यशील उदाहरण मेरे वेबसाइड के कोडपेन के कांटे में पाया जा सकता है , जो WAVE में शून्य कम विपरीत त्रुटियां पैदा करता है।