này nên làm việc:
Về cơ bản nó liên quan đến việc chuyển đổi chúng sang thập phân, tìm nửa, chuyển đổi kết quả lại cho hex và sau đó concatenating chúng.
var color1 = 'FF0000';
var color2 = '00FF00';
var ratio = 0.5;
var hex = function(x) {
x = x.toString(16);
return (x.length == 1) ? '0' + x : x;
};
var r = Math.ceil(parseInt(color1.substring(0,2), 16) * ratio + parseInt(color2.substring(0,2), 16) * (1-ratio));
var g = Math.ceil(parseInt(color1.substring(2,4), 16) * ratio + parseInt(color2.substring(2,4), 16) * (1-ratio));
var b = Math.ceil(parseInt(color1.substring(4,6), 16) * ratio + parseInt(color2.substring(4,6), 16) * (1-ratio));
var middle = hex(r) + hex(g) + hex(b);
Đó là một vấn đề đại số tuyến tính đơn giản (và bạn đã biết rằng kể từ khi bạn đã có câu trả lời cho các màu mẫu của bạn). Những gì bạn đã mã hóa cho đến nay? – Pointy
có thể trùng lặp của [Lập trình Làm sáng hoặc Làm tối màu hex (hoặc rgb và màu pha trộn)] (http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or- rgb-and-blend-colors) –