Javascript顏色rgb與16進制轉換代碼

Javascript實現顏色rgb與16進制轉換的方法。分享給大家供大家參考。具體如下:

Color(12,34,56); Color("#fff") Color("#defdcd") 

 //顏色轉換 var Color = function() {   if (!(this instanceof Color)) {    var color = new Color();    color._init.apply(color, arguments);    return color;   }   if (arguments.length) {    this._init.apply(this, arguments);   } } //設置get,set方法 var methods = ["red", "green", "blue", "colorValue"]; var defineSetGetMethod = function(fn, methods) {   var fnPrototype = fn.prototype;   for (var i = 0; i < methods.length; i++) {    var methodName = methods[i].charAt(0).toLocaleUpperCase() + methods[i].substring(1);    fn.prototype['set' + methodName] = new Function("value", "this." + methods[i] + "= value;");    fn.prototype['get' + methodName] = new Function("return this." + methods[i] + ";");    fn.prototype['toString'] = new Function('return "rgb("+this.red+","+this.green+","+this.blue+")";');   } }; defineSetGetMethod(Color, methods); //擴展函數的實例方法 var extend = function(fn, option) {   var fnPrototype = fn.prototype;   for (var i in option) {    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 {     var colorValue = 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) {     return this.colorValue;    }    var hR = this.red.toString(16);    var hG = this.green.toString(16);    var hB = this.blue.toString(16);    return this.colorValue = "#" + (this.red < 16 ? ("0" + hR) : hR) + (this.green < 16 ? ("0" + hG) : hG) + (this.blue < 16 ? ("0" + hB) : hB);   } }); 

 codego.net節選代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章