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实现禁止后退的方法
Dec 27 Javascript
js限制textarea每行输入字符串长度的代码
Oct 31 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
Sep 14 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
解决vue-cli创建项目的loader问题
Mar 13 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
通过原生vue添加滚动加载更多功能
Nov 21 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
php基础知识:函数基础知识
2006/12/13 PHP
用PHP读取RSS feed的代码
2008/08/01 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php实现简单洗牌算法
2013/06/18 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
js获取Get值的方法
2016/09/29 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python发送邮件脚本
2018/05/22 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
机电专业个人求职信范文
2013/12/30 职场文书
会议营销主持词
2015/07/03 职场文书
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript