How can I establish the difference between two HEX colours?

社会主义新天地 提交于 2019-11-27 07:28:26

问题


I need to be able to extract the different between two hex colours, represented itself as a hex colour, in order to combine them at a later point using LESS.

Ideally, this would work in javascript


回答1:


If you want a full Javascript solution :

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);
  }
};

Try yourself :

colorDifference('#FFFFFF', '#AABBCC'); // returns : "#554433"



回答2:


In LESS you can safely perform calculations on colors, so combining two is easy as this:

{
    color: #ff0000 + #00ff00;
}

or even

{
    color: red + green;
}

EDIT:

Similarly you are able to get the difference between two colors by mere subtracting them and storing the difference in a LESS variable for later.

@difference: #ffff00 - #ff0000;

should give you #00ff00 as a result.



来源:https://stackoverflow.com/questions/9820655/how-can-i-establish-the-difference-between-two-hex-colours

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!