convert to 3-digit hex color code

后端 未结 4 574
[愿得一人]
[愿得一人] 2020-12-19 00:08

I\'ve been using 3-digit hex color values in CSS for a long time: #fff, #999, #069, etc. I can see how the repeating letters/numbers a

相关标签:
4条回答
  • 2020-12-19 00:46

    3 digit CSS code is short for 6 digits": #06a; is #0066aa;
    Each two digits represent a number from 0 to 255.
    Converting these values to hex and back is all you need.

    0 讨论(0)
  • 2020-12-19 00:59

    To convert a 3-character hex code into a 6 character one, you need to repeat each character:

    $hex = '#fff';
    $hex6 = '#' . $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
    

    If you want to convert it to decimal you can use the hexdec function

    0 讨论(0)
  • 2020-12-19 01:00

    #f0f is expanded to #ff00ff so basically you just need to calculate the value and the value times 16 for each character, e.g.:

    #f98: f = 15 => red = 15 + 15*16 = 255 etc.

    0 讨论(0)
  • 2020-12-19 01:08

    function hexfix(str) {
      var v, w;
      v = parseInt(str, 16);	// in rrggbb
      if (str.length == 3) {
        // nybble colors - fix to hex colors
    	//  0x00000rgb              -> 0x000r0g0b
    	//  0x000r0g0b | 0x00r0g0b0 -> 0x00rrggbb
    	w = ((v & 0xF00) << 8) | ((v & 0x0F0) << 4) | (v & 0x00F);
    	v = w | (w << 4);
      }
      return v.toString(16).toUpperCase();
     }
    
    var hex1 = 'AABBCC',
        hex2 = 'ABC';
    
    document.body.appendChild(document.createTextNode(hex1+" becomes "+hexfix(hex1)+'.  '));
    document.body.appendChild(document.createTextNode(hex2+" becomes "+hexfix(hex2)+'.  '));

    Something like this.

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