Как я могу установить разницу между двумя цветами HEX? - PullRequest
1 голос
/ 22 марта 2012

Мне нужно иметь возможность извлекать различия между двумя шестнадцатеричными цветами, представленными в виде шестнадцатеричного цвета, чтобы объединить их в более поздней точке, используя LESS.

В идеале это будет работать в JavaScript

Ответы [ 2 ]

6 голосов
/ 22 марта 2012

Если вы хотите полное решение 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 голос
/ 22 марта 2012

В LESS вы можете безопасно выполнять вычисления для цветов, поэтому объединить два легко, как это:

{
    color: #ff0000 + #00ff00;
}

или даже

{
    color: red + green;
}

EDIT:

Точно так же вы можете получить разницу между двумя цветами, просто вычитая их и сохраняя разницу в переменной LESS для дальнейшего использования.

@difference: #ffff00 - #ff0000;

должен дать вам #00ff00 в результате.

...