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程序设计有所帮助。