您好,欢迎访问一九零五行业门户网

js如何实现rgb与16进制颜色的转换?(代码示例)

rgb与16进制颜色是如何相互转换的?本篇文章就给大家介绍js是如何实现rgb与16进制颜色的相互转换,让大家了解rgb与16进制颜色相互转换的原理。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
在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进制,核心代码如示例:
var num=255; num.tostring(16);
其结果是ff。
说明:tostring里的参数“16”表示数值转换为16进制字符串。
rgb颜色转换为16进制 实例代码如下:
var srgb = "rgb(23, 245, 56)";var shexcolor = srgb.colorhex(); //colorhex()表示转换为十六进制方法//十六进制颜色值的正则表达式var reg = /^#([0-9a-fa-f]{3}|[0-9a-fa-f]{6})$/;/*rgb颜色转换为16进制*/string.prototype.colorhex = function(){ var that = this; 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、javascript实现16进制颜色转化为rgb颜色
16进制转换为十进制相对容易些,核心代码如示例:
parseint("0xff");
其结果就是255
说明:”0x”就表明当前是16进制,由于parseint后面无参数,所以默认就是转换为10进制了。
16进制颜色转化为rgb颜色 实例代码如下:
var shex = "#34538b";var srgbcolor = shex.colorrgb();//colorrgb()表示转为rgb颜色值的方法//十六进制颜色值的正则表达式var reg = /^#([0-9a-fa-f]{3}|[0-9a-fa-f]{6})$/;/*16进制颜色转为rgb格式*/string.prototype.colorrgb = function(){ var scolor = this.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; }};
总结:以上就是本篇文的全部内容,大家可以自己动手尝试,希望能对大家的学习有所帮助。更多相关教程请访问javascript视频教程,jquery视频教程,bootstrap教程!
以上就是js如何实现rgb与16进制颜色的转换?(代码示例)的详细内容。
其它类似信息

推荐信息