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 相关文章推荐
用js实现上传图片前的预览(TX的面试题)
Aug 14 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
Jun 20 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
Mar 31 Javascript
JS获取复选框的值,并传递到后台的实现方法
May 30 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
Jun 24 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
webpack多入口多出口的实现方法
Aug 17 Javascript
React中使用UEditor百度富文本的方法
Aug 22 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 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
php4的彩蛋
2006/10/09 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
绩效专员岗位职责
2013/12/02 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
学校消防安全责任书
2014/07/23 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年招生工作总结
2014/11/26 职场文书
高中班主任评语
2014/12/30 职场文书
二手房购房意向书
2015/05/09 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
解除租赁合同协议书
2016/03/21 职场文书
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技