首页 / js教程

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

    类型:原创      发布者:青灯夜游2018-10-13 14:03:50

    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进制颜色的转换?(代码示例)的详细内容,更多请关注php中文网其它相关文章!

php中文网赞助会员

PHP中文网

未登录