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 相关文章推荐
超级强大的表单验证
Jun 26 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
Dec 24 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
JavaScript SHA-256加密算法详细代码
Oct 06 Javascript
JS获得一个对象的所有属性和方法实例
Feb 21 Javascript
详解如何构建Angular项目目录结构
Jul 13 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
微信小程序wx:for循环的实例详解
Oct 07 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
Nov 14 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
highcharts.js数据绑定方式代码实例
Nov 13 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
JS 控制小数位数的实现代码
2011/08/02 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
详解Python的Django框架中的templates设置
2015/05/11 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
语文教育专业应届生求职信
2013/11/23 职场文书
运动会开幕式主持词
2014/03/28 职场文书
投标授权委托书范文
2014/08/02 职场文书
党委班子剖析材料
2014/08/21 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2015年教师节慰问信
2015/03/23 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
php双向队列实例讲解
2021/11/17 PHP
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android