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 相关文章推荐
javascript中关于执行环境的杂谈
Aug 14 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
jquery改变disabled的boolean状态的三种方法
Dec 13 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
Feb 14 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
JavaScript静态作用域和动态作用域实例详解
Jun 17 Javascript
vue表单数据交互提交演示教程
Nov 13 Javascript
谈谈node.js中的模块系统
Sep 01 Javascript
js+canvas实现刮刮奖功能
Sep 13 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获取文件后缀的9种方法
2016/03/22 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python 实现向word(docx)中输出
2020/02/13 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
Python 爬虫的原理
2020/07/30 Python
django和flask哪个值得研究学习
2020/07/31 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
大学生自荐信
2013/12/11 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
爱情保证书
2015/01/17 职场文书
辞职信的写法
2015/02/27 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
公路施工安全责任书
2015/05/08 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
科级干部培训心得体会
2016/01/06 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
Java 多线程协作作业之信号同步
2022/05/11 Java/Android
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers