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利用Array.splice实现Array的insert/remove
Jan 13 Javascript
JS中toFixed()方法引起的问题如何解决
Nov 20 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
May 23 Javascript
JS模拟实现方法重载示例
Aug 03 Javascript
canvas绘制环形进度条
Feb 23 Javascript
详解如何使用webpack打包Vue工程
May 27 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
Dec 16 Javascript
Vue中this.$router.push参数获取方法
Feb 27 Javascript
koa router 多文件引入的方法示例
May 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 Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python实现二叉搜索树
2016/02/03 Python
简单学习Python time模块
2016/04/29 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
python实现静态服务器
2019/09/05 Python
python将数组n等分的实例
2019/12/02 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
Python阶乘求和的代码详解
2020/02/14 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
公司年会主持词
2014/03/22 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
技术股份合作协议书
2014/10/05 职场文书
三潭印月的导游词
2015/02/12 职场文书
单方投资意向书
2015/05/11 职场文书
《花钟》教学反思
2016/02/17 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
Python学习开发之图形用户界面详解
2021/08/23 Python
Python实现位图分割的效果
2021/11/20 Python