Javascript實現顏色rgb與16進位轉換的方法,javascriptrgb

來源:互聯網
上載者:User

Javascript實現顏色rgb與16進位轉換的方法,javascriptrgb

本文執行個體講述了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);  }});

希望本文所述對大家的javascript程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.