Javascript实现颜色rgb与16进制转换的方法


Posted in Javascript onApril 18, 2015

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
JQuery中根据属性或属性值获得元素(6种情况获取方法)
Jan 17 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
Aug 22 Javascript
基于React.js实现原生js拖拽效果引发的思考
Mar 30 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
js 只比较时间大小的实例
Oct 26 Javascript
关于node-bindings无法在Electron中使用的解决办法
Dec 18 Javascript
基于vue如何发布一个npm包的方法步骤
May 15 Javascript
JS实现处理时间,年月日,星期的公共方法示例
May 31 Javascript
JS实现继承的几种常用方式示例
Jun 22 Javascript
JS解析XML文件和XML字符串详解
Apr 17 #Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 #Javascript
js获取当前日期时间及其它操作汇总
Apr 17 #Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 #Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 #Javascript
JS获取图片高度宽度的方法分享
Apr 17 #Javascript
JS替换字符串中空格方法
Apr 17 #Javascript
You might like
PHP的变量总结 新手推荐
2011/04/18 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
python 运算符 供重载参考
2009/06/11 Python
python设计模式大全
2016/06/27 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
python 爬取疫情数据的源码
2020/02/09 Python
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
银行职业规划书范文
2013/12/28 职场文书
父母寄语大全
2014/04/12 职场文书
如何书写邀请函?
2019/06/24 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python