How can I establish the difference between two HEX colours?

前端 未结 2 737
有刺的猬
有刺的猬 2020-12-10 23:08

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

相关标签:
2条回答
  • 2020-12-10 23:49

    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"
    
    0 讨论(0)
  • 2020-12-10 23:59

    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.

    0 讨论(0)
提交回复
热议问题