博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS实现rgb与16进制颜色相互转换
阅读量:5815 次
发布时间:2019-06-18

本文共 1412 字,大约阅读时间需要 4 分钟。

1.rgb转16进制

function to16 (a) {//RGB(204,204,024)

  //十六进制颜色值的正则表达式
  var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  var that = a;
  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 === "0") {
    hex += 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;
}
} else {
return that;
}
}

2.16进制转rgb

function torgb(a) {//#ffffff

//十六进制颜色值的正则表达式
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
var sColor = a.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;
}
//处理六位的颜色值
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;
}
}

转载于:https://www.cnblogs.com/shuishuowobushihuiyuan/p/3664109.html

你可能感兴趣的文章
POJ 3057 Evacuation 二分图匹配
查看>>
js 获取ur参数 只要问号后面的那段传进url
查看>>
dubbo常见的一些面试题
查看>>
再见,Hotmail
查看>>
django
查看>>
HDU4268 Alice and Bob【贪心+SET】
查看>>
HDU1046 POJ1450 UVALive2334 ZOJ1037 Gridland【数学计算】
查看>>
CCF201412-1 门禁系统(100分)
查看>>
[跟我学spring学习笔记][IoC]
查看>>
【C++】C++引用返回值需谨慎
查看>>
总结第十一天
查看>>
【LeetCode】101 - Symmetric Tree
查看>>
集合(五)
查看>>
关于在ie7,8等低版本浏览器的获得<select>元素的值的的兼容性问题
查看>>
字节输入输出流的代码注意事项
查看>>
并查集——poj1611(入门)
查看>>
安装指定版本的nodejs
查看>>
淘宝NPM镜像cnpm
查看>>
android studio application应用打包jar
查看>>
面向对象编程的六大原则
查看>>