我需要能够提取两种十六进制颜色之间的差异,将其本身表示为十六进制颜色,以便在以后使用LESS组合它们。
理想情况下,这将在javascript 中工作
如果您想要完整的Javascript解决方案:
function parseHexColor(c) {
var j = {};
var s = c.replace(/^#([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/, function(_, r, g, b) {
j.red = parseInt(r, 16);
j.green = parseInt(g, 16);
j.blue = parseInt(b, 16);
return "";
});
if(s.length == 0) {
return j;
}
};
function colorDifference(a, b) {
var a = parseHexColor(a);
var b = parseHexColor(b);
if(typeof(a) != 'undefined' && typeof(b) != 'undefined') {
return "#" + (a.red - b.red).toString(16) + (a.green - b.green).toString(16) + (a.blue - b.blue).toString(16);
}
};
试试看:
colorDifference('#FFFFFF', '#AABBCC'); // returns : "#554433"
在LESS中,您可以安全地对颜色进行计算,因此将两者结合起来很容易:
{
color: #ff0000 + #00ff00;
}
甚至
{
color: red + green;
}
编辑:
类似地,您可以通过减去两种颜色并将差异存储在LESS变量中以备以后使用来获得它们之间的差异。
@difference: #ffff00 - #ff0000;
结果应该给你#00ff00
。