美文网首页
颜色的十六进制与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