JS-011-颜色进制转换(RGB转16进制;16进制转RGB)
在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制;16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#000080,#FA08FA)转换时总是提示颜色非法,看了一下 js 源码,发现其进制转换的方法是错误的。找了一下度娘和谷大爷,最终写了一个颜色转换的小方法,源码如下所示:
String.prototype.colorHex2Rgb = function(){
var reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
var sColor = this.toLowerCase(); if(sColor && reg.test(sColor)){
if(sColor.length === 4){
var sColorNew = "#"; for(var i=1; i<4; i+=1){
sColorNew += sColor.slice(i,i+1).concat(sColor.slice(i,i+1));
} sColor = sColorNew;
} var sColorChange = []; for(var i=1; i<7; i+=2){
sColorChange.push(parseInt("0x"+sColor.slice(i,i+2)));
} return "RGB(" + sColorChange.join(",") + ")";
}else{
return sColor;
}
}; String.prototype.colorRgb2Hex = function(){
var reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
var that = this; if(/^(rgb|RGB)/.test(that)){
var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");
var strHex = "#"; for(var i=0; i<aColor.length; i++){
var hex = Number(aColor[i]).toString(16); if(hex === "0"){
hex += hex;
} strHex += hex;
} if(strHex.length !== 7){
strHex = that;
} return strHex.toUpperCase();
}else if(reg.test(that)){
var aNum = that.replace(/#/,"").split(""); if(aNum.length === 6){
return that;
}else if(aNum.length === 3){
var numHex = "#"; for(var i=0; i<aNum.length; i+=1){
numHex += (aNum[i]+aNum[i]);
} return numHex.toUpperCase();
}
}else{
return that.toUpperCase();
}
};
使用示例:
"#000080".colorHex2Rgb() ----> RGB(0,0,128)
"#FA0080".colorHex2Rgb() ----> RGB(250,0,128)
"#888".colorHex2Rgb() ----> RGB(136,136,136)
"#888888".colorHex2Rgb() ----> RGB(136,136,136) "RGB(128,128,128)".colorRgb2Hex() ----> #808080
"RGB(255,128,128)".colorRgb2Hex() ----> #FF8080
"RGB(128,0,255)".colorRgb2Hex() ----> #8000FF
至此, JS-011-颜色进制转换(RGB转16进制;16进制转RGB) 顺利完结,希望此文能够给初学 JavaScript 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
JS-011-颜色进制转换(RGB转16进制;16进制转RGB)的更多相关文章
- PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]
自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到. 可以实现: 10进制转换2.8.16.36.62进制2.8.16.36.62进制转换10进制 有 ...
- C# 进制转换 在什么情况下使用16进制,字节数组,字符串
C# 进制转换 Admin2013年9月18日 名人名言:从工作里爱了生命,就是通彻了生命最深的秘密.——纪伯伦 1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Con ...
- 【进制转换】codevs 1474 十进制转m进制
#include<cstdio> using namespace std; ],en; int main() { scanf("%d%d",&n,&m) ...
- JS 进制转换的理解
该事情的由来是来自于一个面试题,题目是这样的,[1,2,3].map(parseInt)的结果是什么? 作为菜鸟的我们一定是觉得分别把1,2,3分别交给parseInt,无非就是1,2,3嘛.其实结果 ...
- Java的进制转换操作(十进制、十六进制、二进制)
2014-05-06 17:34 吴文付 最近由于工作上的需要,遇到进制转换的问题.涉及到的进制主要是 十进制,十六进制,二进制中间的转换. 这里整理一下.具体的计划为:封装一个转换类,一个测试类. ...
- java:数据结构(二)栈的应用(进制转换全收集)
说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article ...
- 华为笔试——C++进制转换
题目:2-62进制转换 题目介绍:输入一个n1 进制的整数(包括负数),将其转换成n2 进制,其中n1 .n2 的范围是 [ 2,62 ] .每个数字的范围是0-9.a-z.A-Z.不用考虑非法输入. ...
- Java 基础入门随笔(2) JavaSE版——关键字、进制转换、类型转换
1.Java语言-关键字 关键字:被java语言赋予了特殊含义的词,特点是所有的字母都为小写. java涉及到的关键字整理: 用于定义数据类型的关键字 class interface byte sho ...
- 写一个比较全的进制转换函数--ic
//写一个比较全的进制转换函数-----未完成 #include <stdio.h> //D进制转换后 (比如10-2进制) 结果可能会很大 需要很长的字符串来存 #include < ...
- Python(3) 进制转换
2进制 :0b8进制: 0o16进制: 0x10进制:原来的数据 进制转换:bin() 方法:转化为 2进制 >>> bin(10)'0b1010'oct() 方法:转化为 8进制& ...
随机推荐
- ural 2063. Black and White
2063. Black and White Time limit: 1.0 secondMemory limit: 64 MB Let’s play a game. You are given a r ...
- 串 & 容斥原理
题意: 给出n (n<=50000) 个长度为4的字符串,问有且仅有d(1<=d<=4)处不相同的字符串有几对. SOL: 一直对着4发呆,这么小的字符串背后有什么玄学呢= =... ...
- 使用 smartupload 上传图片
使用 smartupload 请参见 elleniou 的 博客 : http://www.cnblogs.com/elleniou/archive/2012/09/24/2700583.html
- Android Fragment 生命周期及其API使用(建议使用自定义View替换Fragment)
我为什么不主张使用Fragment Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 ) 生命周期回调说明: onAttach ...
- Codeforces Round #245 (Div. 2) B - Balls Game
暴利搜索即可 #include <iostream> #include <vector> #include <iostream> using namespace s ...
- 【HDU】1536 S-Nim
http://acm.hdu.edu.cn/showproblem.php?pid=1536 题意:同nim...多堆多询问...单堆n<=10000,每次取的是给定集合的数= = #inclu ...
- 【noiOJ】p8208
03:切分矩形组 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定若干个平行于坐标轴的互不重叠的矩形,矩形的顶点都是整点.要求画一根平行于y轴的直线x=k ...
- linux系统下yum源的搭建
1.建立挂载点 系统默认在 /mnt目录 1>创建挂载点 mkdir -p /mnt/cdrom 参数-p是需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理 2>查看 ...
- php关于金额比较引发的问题(转)
做电子商务的时候一般会涉及到金额的比较,按正常的思路来看用><=这些个符号就可以了.可是要是到程序上来搞这个的话就出大事了.现在看下这段代码: $f = 0.07; var_dump($f ...
- java分享第二天(变量及命名规范)
1 JAVA是一种强类型语言,每个变量都必须声明其类型 2 Java变量是程序中最基本的存储单元,其主要包括变量名,变量类型和作用域 3 声明变量可以一行声明多个 4局部变量:方法或语句块内部定义的变 ...