美文网首页
颜色的十六进制与rgb相互转换

颜色的十六进制与rgb相互转换

作者: Amy_yqh | 来源:发表于2018-12-29 16:06 被阅读0次
// 十六进制转rgb
String.prototype.colorRgb = function(){
  var sColor = this.toLowerCase();
  //十六进制颜色值的正则表达式
  var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  // 如果是16进制颜色
  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;
    }
    //处理六位的颜色值
    var sColorChange = [];
    for (var i=1; i<7; i+=2) {
      sColorChange.push(parseInt("0x"+sColor.slice(i, i+2)));
    }
    // return "RGB(" + sColorChange.join(",") + ")";
    return {
      rbgString:"RGB(" + sColorChange.join(",") + ")",
      rbgArray:sColorChange
    };
  }
  return sColor;
};

// rgb转十六进制
String.prototype.colorHex = function(){
  var that = this;
  //十六进制颜色值的正则表达式
  var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  // 如果是rgb颜色表示
  if (/^(rgb|RGB)/.test(that)) {
    var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(",");
    var strHex = "#";
    for (var i=0; i<aColor.length; i++) {
      var hex = Number(aColor[i]).toString(16);
      if (hex.length < 2) {
        hex = '0' + hex;
      }
      strHex += hex;
    }
    if (strHex.length !== 7) {
      strHex = that;
    }
    return strHex;
  } else if (reg.test(that)) {
    var aNum = that.replace(/#/,"").split("");
    if (aNum.length === 6) {
      return that;
    } else if(aNum.length === 3) {
      var numHex = "#";
      for (var i=0; i<aNum.length; i+=1) {
        numHex += (aNum[i] + aNum[i]);
      }
      return numHex;
    }
  }
  return that;
};

相关文章

网友评论

      本文标题:颜色的十六进制与rgb相互转换

      本文链接:https://www.haomeiwen.com/subject/uyhplqtx.html