JS实现颜色值的转换
从网上看了个案例,是实现颜色值转换的,就想着自己也写个。网上的案例链接找不到了,这里也就不贴了。
JavaScript颜色转换的核心就是进制间的转换。
rgba(0,0,0,.4)转换成#000000,就是Number.toString(16)
#ffffff转换成rgb(255,255,255),就是parseInt(String,16)
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8;">
<title>JS-颜色值的转换</title>
<meta name="author" content="rainna" />
<meta name="keywords" content="rainna's js lib" />
<meta name="description" content="js" />
<style>
*{margin:0;padding:0;}
body{background:#f0f0f0;}
h2{margin:0 0 20px;}
input{width:300px;height:24px;line-height:24px;} .m-box{width:900px;margin:0 auto;padding:20px;}
</style>
</head> <body>
<div class="m-box">
<h2>RGB(A)颜色转换为HEX十六进制的颜色值</h2>
<div class="box1">
<input type="text" id="colorIpt1" value="rgba(0,0,0,.4)"/>
<a href="#" id="link1">转换</a>
<input type="text" id="colorIpt2"/>
</div>
</div> <div class="m-box">
<div class="box1">
<input type="text" id="colorIpt3" value="#ffffff"/>
<a href="#" id="link2">转换</a>
<input type="text" id="colorIpt4"/>
</div>
</div> <script>
var colorChange = {
rgbToHex:function(val){ //RGB(A)颜色转换为HEX十六进制的颜色值
var r, g, b, a,
regRgba = /rgba?\((\d{1,3}),(\d{1,3}),(\d{1,3})(,([.\d]+))?\)/, //判断rgb颜色值格式的正则表达式,如rgba(255,20,10,.54)
rsa = val.replace(/\s+/g,'').match(regRgba);
if(!!rsa){
r = parseInt(rsa[1]).toString(16);
r = r.length == 1 ? '0' + r : r;
g = (+rsa[2]).toString(16);
g = g.length == 1 ? '0' + g : g;
b = (+rsa[3]).toString(16);
b = b.length == 1 ? '0' + b : b;
a = (+(rsa[5] ? rsa[5] : 1)) * 100;
return {hex:'#' + r + g + b, alpha: Math.ceil(a)};
}else{
return {hex:val, alpha:100};
}
},
hexToRgb:function(val){ //HEX十六进制颜色值转换为RGB(A)颜色值
var a,b,c;
if((/^#/g).test(val)){
a = val.slice(1,3);
b = val.slice(3,5);
c = val.slice(5,7);
return {rgba:'rgb(' + parseInt(a,16) + ',' + parseInt(b,16) + ',' + parseInt(c,16) + ')'};
}else{
return {rgba:'无效值:' + val};
}
}
}; link1.onclick = function(){
var obj = colorChange.rgbToHex(document.getElementById('colorIpt1').value);
document.getElementById('colorIpt2').value = '颜色值:' + obj.hex + ',透明度:' + obj.alpha + '%';
};
link2.onclick = function(){
var obj = colorChange.hexToRgb(document.getElementById('colorIpt3').value);
document.getElementById('colorIpt4').value = '颜色值:' + obj.rgba;
};
</script>
</body>
</html>
JS实现颜色值的转换的更多相关文章
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
- js 的强制 类型 转换cast, 伪对象?
拼音输入法简单快捷, 但是重码多, 所以要看清了再选择, 不然会影响输入正确性和 心情的! js的类型 隐式 转换? 是指, 根据 表达式的操作符号 如if(), + , && , j ...
- js如何把字符串转换成json数据的方法
js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ...
- js中的时间转换—毫秒转换成日期时间
转自:http://www.javascript100.com/?p=181 前几天,在项目中遇到js时间增加问题,要将js毫秒时间转换成日期时间 var oldTime = (new Date(&q ...
- JS将/Date(1446704778000)/转换成str
JS将/Date(1446704778000)/转换成str:var dateStr = eval(ele.add_time.replace(/\/Date\((\d+)\)\//gi, " ...
- 小tips:JS数值之间的转换,JS中最大的Number是多少?,JS == 与 === 的区别
JS数值之间的转换 Number(), parseInt(),parseFloat() Number()函数的转换规则如下: 1.如果boolean值,true和false将分别被转换为1和02.如果 ...
- js数据类型隐式转换问题
js数据类型隐式转换 ![] == false //true 空数组和基本类型转换,会先[].toString() 再继续比较 ![] == [] //true ![] //false [] == [ ...
- JS中应用正则表达式转换大小写
JS中应用正则表达式转换大小写,代码很简单,看代码: 以下首字母大写,其它字母小写 <script type="text/javascript"> function r ...
- JQuery学习:jquery对象和js对象区别和转换
JQuery对象与JS对象区别与转换 1.JQuery对象在操作时,更加方便 2.JQuery对象和js对象方法不通用 3.两者相互转换 * jq -- > js:jq对象[索引] 或者 ...
随机推荐
- Mac上的软件使用介绍
目录大纲: Drop to GIF Parallels Desktop 1.Drop to GIF 功能:将视频文件可以生产动态图gif文件 网址在github上:https://github.com ...
- IOS之UIImageView--小实例项目--带音效的拳皇动画
内容大纲: 1.初步工作 2.开始敲代码 3.注意 4.可能遇到的错误 5.设置音频速率在代码顺序上的注意点 带音效的拳皇动画实例项目 初步工作 1.新建一Objective-C工程之后,将需要的拳皇 ...
- (Ios 实战) 自定义UITableView
自定义UITableView 分成两个部分 1 自定义UITableViewCell 继承UITableViewCell,同时提供接口,根据当前的数据,现实View 2 在UITableView中实 ...
- Linux下恢复删除的文件
转自:http://github.tiankonguse.com/blog/2015/09/13/linux-remove-recovery/ 下午, DBA找我说有些SQL执行了两个小时了,导致主从 ...
- Uploadify文件上传
一.简介 Uploadify 是一种基于html5 或 flash的多文件上传的jQuery插件.Uploadify可以支持多种定制.它是一种异步的文件上传插件.下载网站为http://www.upl ...
- 设计模式C#实现(六)——单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 构成: 1.私有的构造函数 2.私有静态的实例 3.返回实例的静态方法 public class Singleton { privat ...
- 爆零后的感受外加一道强联通分量HDU 4635的题解
今天又爆零了,又是又,怎么又是又,爆零爆多了,又也就经常挂嘴边了,看到这句话,你一定很想说一句””,弱菜被骂傻,也很正常啦. 如果你不开心,可以考虑往下看. 翻到E(HDU 4635 Strongly ...
- Error during installing HAXM, VT-X not working 在安装HAXM错误,开始不工作
最佳答案 (Best Answer) Some antivirus options prevent Haxm installation. ie: Avast : settings (parametre ...
- STL的erase()陷阱-迭代器失效总结
下面材料整理自Internet&著作. STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.s ...
- C++STL之迭代器
迭代器 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围.迭代器就如同一个指针.事实上,C++的指针也是一种迭代器.但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值.例如, ...