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 18 Javascript
jQuery EasyUI API 中文文档 - Form表单
Oct 06 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 Javascript
JavaScript获取表单内所有元素值的方法
Apr 02 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
Aug 29 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
浅谈Node.js:fs文件系统模块
Dec 08 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
Node.js Express安装与使用教程
May 11 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
Oct 25 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 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(3)
2006/10/09 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
如何在python中使用selenium的示例
2017/12/26 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
实例讲解Python3中abs()函数
2019/02/19 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
详解django中Template语言
2020/02/22 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
python palywright库基本使用
2021/01/21 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
一套SQL笔试题
2016/08/14 面试题
个人简历中自我评价
2014/02/11 职场文书
捐助倡议书
2015/01/19 职场文书
校运会广播稿
2015/08/19 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js