菜鸟笔记
提升您的技术认知

rgb与16进制颜色是如何相互转换的?-ag真人游戏

在css中定义颜色可以使用rgb颜色值,例:rgb(182, 0, 35);也可以使用16进制颜色值,例:#b60023。不管是rgb(182, 0, 35),还是#b60023都表示了同一种颜色,其实无论是用哪一种表示方法都行,但由于web页面的千变万化,遇到的情况也有可能千奇百怪,有时我们就需要把rgb与16进制颜色进行转换了。

我们来看看一个rgb与16进制颜色如何转换的例子。

对于十六进制颜色值,可以将它们两个划分为一组,从左到右分别代表rgb。两个十六进制数的第一个和十六相乘,结果加上第二个数,就得到一个0-255之间的数。

例如,有一个十六进制颜色值#b60023,将它转换为rgb就是:r(b6),g(00),b(23)。那么红色就是:b(11) x 16 6 = 182。绿色为0,蓝色为:2 x 16 3 = 35。因此,十六进制颜色值#b60023对应的rgb()红色就是:rgb(182, 0, 35)。

那么如何使用javascript来实现rgb与16进制颜色的相互转换?我们来看看实现方法。

javascript实现颜色转换的核心就是进制间的转换。

rgb格式其实就是十进制表示法,所以,十六进制颜色与rgb颜色的转换就是十六进制与十进制之间的转换。

1、javascript实现rgb颜色转换为16进制(十进制转16进制)

十进制转换为16进制,核心代码如示例:

const num=255;
num.tostring(16);

其结果是ff。

说明:tostring里的参数“16”表示数值转换为16进制字符串。

rgb颜色转换为16进制 实例代码如下:

/*rgb颜色转换为16进制*/
function colorhex(rgbstr) {
  
  //十六进制颜色值的正则表达式
  const reg = /^#([0-9a-fa-f]{3}|[0-9a-fa-f]{6})$/;
  if (/^(rgb|rgb)/.test(rgbstr)) {
  
    const acolor = rgbstr.replace(/(?:\(|\)|rgb|rgb)*/g, "").split(",");
    let strhex = "#";
    for (let i = 0; i < acolor.length; i  ) {
  
      let hex = number(acolor[i]).tostring(16);
      if (hex === "0") {
  
        hex  = hex;
      }
      strhex  = hex;
    }
    if (strhex.length !== 7) {
  
      strhex = rgbstr;
    }
    return strhex;
  } else if (reg.test(rgbstr)) {
  
    const anum = rgbstr.replace(/#/, "").split("");
    if (anum.length === 6) {
  
      return rgbstr;
    } else if (anum.length === 3) {
  
      let numhex = "#";
      for (let i = 0; i < anum.length; i  = 1) {
  
        numhex  = (anum[i]   anum[i]);
      }
      return numhex;
    }
  } else {
  
    return rgbstr;
  }
};
console.log(colorhex("rgb(52,83,139)"))		// #17f538

2、javascript实现16进制颜色转化为rgb颜色

16进制转换为十进制相对容易些,核心代码如示例:

parseint("0xff");

其结果就是255

说明:”0x”就表明当前是16进制,由于parseint后面无参数,所以默认就是转换为10进制了。

16进制颜色转化为rgb颜色 实例代码如下:

function colorrgb (colorstr) {
  
  //十六进制颜色值的正则表达式
  var reg = /^#([0-9a-fa-f]{3}|[0-9a-fa-f]{6})$/;
  var scolor = colorstr.tolowercase();
  if (scolor && reg.test(scolor)) {
  
    if (scolor.length === 4) {
  
      var scolornew = "#";
      for (var i = 1; i < 4; i  = 1) {
  
        scolornew  = scolor.slice(i, i   1).concat(scolor.slice(i, i   1));
      }
      scolor = scolornew;
    }
    //处理六位的颜色值f
    var scolorchange = [];
    for (var i = 1; i < 7; i  = 2) {
  
      scolorchange.push(parseint("0x"   scolor.slice(i, i   2)));
    }
    return "rgb("   scolorchange.join(",")   ")";
  } else {
  
    return scolor;
  }
};
console.log(colorrgb("#34538b"))	// rgb(52,83,139)

总结:以上就是本篇文的全部内容,大家可以自己动手尝试,希望能对大家有所帮助。

网站地图