Javascript实现颜色rgb与16进制转换的方法
本文实例讲述了Javascript实现颜色rgb与16进制转换的方法。分享给大家供大家参考。具体如下:
使用方法:
Color(12,34,56); Color("#fff") Color("#defdcd")
实现代码:
//颜色转换 varColor=function(){ if(!(thisinstanceofColor)){ varcolor=newColor(); color._init.apply(color,arguments); returncolor; } if(arguments.length){ this._init.apply(this,arguments); } } //设置get,set方法 varmethods=["red","green","blue","colorValue"]; vardefineSetGetMethod=function(fn,methods){ varfnPrototype=fn.prototype; for(vari=0;i<methods.length;i++){ varmethodName=methods[i].charAt(0).toLocaleUpperCase()+methods[i].substring(1); fn.prototype['set'+methodName]=newFunction("value","this."+methods[i]+"=value;"); fn.prototype['get'+methodName]=newFunction("returnthis."+methods[i]+";"); fn.prototype['toString']=newFunction('return"rgb("+this.red+","+this.green+","+this.blue+")";'); } }; defineSetGetMethod(Color,methods); //扩展函数的实例方法 varextend=function(fn,option){ varfnPrototype=fn.prototype; for(variinoption){ fnPrototype[i]=option[i]; } }; extend(Color,{ _init:function(){ if(arguments.length==3){ this.red=arguments[0]; this.green=arguments[1]; this.blue=arguments[2]; this.getColorValue(); }else{ varcolorValue=arguments[0].replace(/^\#{1}/,""); if(colorValue.length==3){ colorValue=colorValue.replace(/(.)/g,'$1$1'); } this.red=parseInt('0x'+colorValue.substring(0,2),16); this.green=parseInt('0x'+colorValue.substring(2,4),16); this.blue=parseInt('0x'+colorValue.substring(4),16); this.colorValue="#"+colorValue; } }, getColorValue:function(){ if(this.colorValue){ returnthis.colorValue; } varhR=this.red.toString(16); varhG=this.green.toString(16); varhB=this.blue.toString(16); returnthis.colorValue="#"+(this.red<16?("0"+hR):hR)+(this.green<16?("0"+hG):hG)+(this.blue<16?("0"+hB):hB); } });
希望本文所述对大家的javascript程序设计有所帮助。