Tôi sẽ không có tín dụng cho mã này vì nó không phải là của tôi, nhưng tôi để nó ở đây cho những người khác để tìm một cách nhanh chóng trong tương lai:
Dựa trên Đánh dấu chuộc câu trả lời, đây là một đoạn mã cho phiên bản đơn giản:
function pickTextColorBasedOnBgColorSimple(bgColor, lightColor, darkColor) {
var color = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;
var r = parseInt(color.substring(0, 2), 16); // hexToR
var g = parseInt(color.substring(2, 4), 16); // hexToG
var b = parseInt(color.substring(4, 6), 16); // hexToB
return (((r * 0.299) + (g * 0.587) + (b * 0.114)) > 186) ?
darkColor : lightColor;
}
và đây là đoạn mã cho phiên bản cao cấp:
function pickTextColorBasedOnBgColorAdvanced(bgColor, lightColor, darkColor) {
var color = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;
var r = parseInt(color.substring(0, 2), 16); // hexToR
var g = parseInt(color.substring(2, 4), 16); // hexToG
var b = parseInt(color.substring(4, 6), 16); // hexToB
var uicolors = [r/255, g/255, b/255];
var c = uicolors.map((col) => {
if (col <= 0.03928) {
return col/12.92;
}
return Math.pow((col + 0.055)/1.055, 2.4);
});
var L = (0.2126 * c[0]) + (0.7152 * c[1]) + (0.0722 * c[2]);
return (L > 0.179) ? darkColor : lightColor;
}
để sử dụng chúng chỉ cần gọi:
var color = '#EEACAE' // this can be any color
pickTextColorBasedOnBgColorSimple(color, '#FFFFFF', '#000000');
Ngoài ra, cảm ơn Alx
và chetstone
.
Xem ở đây: http://stackoverflow.com/questions/946544/good-text-foreground-color-for-a-given-background-color/946734#946734 –
Có liên quan (nhưng cũng có hai mặt): http://stackoverflow.com/questions/3942878/how-to-decide-font-color-in-white-or-black-depending-on-background-color http: // stackoverflow. com/questions/3116260/given-a-background-color-how-to-get-a-foreground-color-that-make-it-readable-on – JYelton