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 学习笔记(一)
Oct 13 Javascript
解析javascript系统错误:-1072896658的解决办法
Jul 08 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
微信小程序checkbox组件使用详解
Jan 31 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
smarty section简介与用法分析
2008/10/03 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
javascript 隔行换色函数代码
2010/10/24 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
详解python with 上下文管理器
2020/09/02 Python
台湾家适得:Homeget
2019/02/11 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
公司授权委托书
2014/04/04 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
生产现场禁烟通知
2015/04/23 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
孟佩杰观后感
2015/06/17 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang