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 相关文章推荐
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
JS俄罗斯方块,包含完整的设计理念
Dec 11 Javascript
解决Extjs上传图片无法预览的解决方法
Mar 22 Javascript
解析javascript 浏览器关闭事件
Jul 08 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
Apr 23 Javascript
JS简单随机数生成方法
Sep 05 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
如何解决vue与传统jquery插件冲突
Mar 20 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 Javascript
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
vue-cli 首屏加载优化问题
Nov 06 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
PR值查询 | PageRank 查询
2006/12/20 PHP
PHP 实例化类的一点摘记
2008/03/23 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
JavaScript图片处理与合成总结
2018/03/04 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python实现list由于numpy array的转换
2018/04/04 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
化验室技术员岗位职责
2013/12/24 职场文书
住房公积金接收函
2014/01/09 职场文书
部队学习十八大感言
2014/01/11 职场文书
财务部会计岗位职责
2015/02/03 职场文书
导游词怎么写
2015/02/04 职场文书