如何确定两种HEX颜色之间的差异?

时间:2012-03-22 10:41:43

标签: javascript colors hex less

我需要能够提取两种十六进制颜色之间的差异,将其自身表示为十六进制颜色,以便稍后使用LESS将它们组合起来。

理想情况下,这适用于javascript

2 个答案:

答案 0 :(得分:6)

如果你想要一个完整的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"

答案 1 :(得分:1)

在LESS中,您可以安全地对颜色进行计算,因此将两者结合起来非常简单:

{
    color: #ff0000 + #00ff00;
}

甚至

{
    color: red + green;
}

编辑:

同样地,你可以通过减去它们并将差异存储在LESS变量中来获得两种颜色之间的差异。

@difference: #ffff00 - #ff0000;

应该为您提供#00ff00