从网上看了个案例,是实现颜色值转换的,就想着自己也写个。网上的案例链接找不到了,这里也就不贴了。

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实现颜色值的转换的更多相关文章

  1. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  2. js 的强制 类型 转换cast, 伪对象?

    拼音输入法简单快捷, 但是重码多, 所以要看清了再选择, 不然会影响输入正确性和 心情的! js的类型 隐式 转换? 是指, 根据 表达式的操作符号 如if(), + , && , j ...

  3. js如何把字符串转换成json数据的方法

    js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ...

  4. js中的时间转换—毫秒转换成日期时间

    转自:http://www.javascript100.com/?p=181 前几天,在项目中遇到js时间增加问题,要将js毫秒时间转换成日期时间 var oldTime = (new Date(&q ...

  5. JS将/Date(1446704778000)/转换成str

    JS将/Date(1446704778000)/转换成str:var dateStr = eval(ele.add_time.replace(/\/Date\((\d+)\)\//gi, " ...

  6. 小tips:JS数值之间的转换,JS中最大的Number是多少?,JS == 与 === 的区别

    JS数值之间的转换 Number(), parseInt(),parseFloat() Number()函数的转换规则如下: 1.如果boolean值,true和false将分别被转换为1和02.如果 ...

  7. js数据类型隐式转换问题

    js数据类型隐式转换 ![] == false //true 空数组和基本类型转换,会先[].toString() 再继续比较 ![] == [] //true ![] //false [] == [ ...

  8. JS中应用正则表达式转换大小写

    JS中应用正则表达式转换大小写,代码很简单,看代码: 以下首字母大写,其它字母小写 <script type="text/javascript"> function r ...

  9. JQuery学习:jquery对象和js对象区别和转换

    JQuery对象与JS对象区别与转换 1.JQuery对象在操作时,更加方便 2.JQuery对象和js对象方法不通用 3.两者相互转换 *  jq -- > js:jq对象[索引]  或者  ...

随机推荐

  1. [android] 手机卫士自定义对话框布局

    手机防盗页面部分 点击手机防盗,进行判断,如果没有设置密码,显示一个设置密码的对话框,如果已经设置密码了,弹出输入密码对话框 密码保存在SharedPreferences中,数据取出进行判断 自定义一 ...

  2. iOS 摇一摇

    - (void)viewDidLoad { [super viewDidLoad]; [[UIApplication sharedApplication] setApplicationSupports ...

  3. OC语言-02-OC语言-基础知识

    一.基础语法 1> OC语言和C语言 C语言是面向过程的语言,OC语言是面向对象的语言 OC语言继承了C语言,并增加了面向对象的思想 以下内容只介绍OC语言与C语言的不同之处 2> 关键字 ...

  4. android 进程间通信数据(二)------parcel的实现

    Serialize是java原生就自带的东西,我们可以看到android的源码 所以看看android是如何实现parcel的,这对我们自己代码设计有什么启发. Parcel: 在android中,p ...

  5. bootstrap3 兼容IE8浏览器

    近期在使用bootstrap这个优秀的前端框架,这个框架非常强大,框架里面有下拉菜单.按钮组.按钮下拉菜单.导航.导航条.面包屑.分页.排版.缩略图.警告对话框.进度条.媒体对象等,bootstrap ...

  6. date\"123456 错误排查

    最近服务器重装,干脆将所有的源代码都重新整理了一下,开始一切正常,后来发现,每次修改一个画面的时候就会报错 跟踪了下发现是datetime.SmartDate等时间类型的数据,在进行序列化的时候改变了 ...

  7. Effective Java 48 Avoid float and double if exact answers are required

    Reason The float and double types are particularly ill-suited for monetary calculations because it i ...

  8. 在SQL2008R2查询分析器出错(在执行批处理时出现错误。错误消息为: 目录名称无效。)

    在用SQL2008R2查询分析器时 SELECT * FROM 表名; 出错: 在执行批处理时出现错误.错误消息为: 目录名称无效. 原因: 在打开查询分析器时,用360软件清空了临时文件(只是偶尔1 ...

  9. Spring配置文件外部化配置及.properties的通用方法

    摘要:本文深入探讨了配置化文件(即.properties)的普遍应用方式.包括了Spring.一般的.远程的三种使用方案. 关键词:.properties, Spring, Disconf, Java ...

  10. Linux objcopy命令

    一.简介 [功能] 将目标文件的一部分或者全部内容拷贝到另外一个目标文件中,或者实现目标文件的格式转换. [描述] objcopy工具使用BFD库读写目标文件,它可以将一个目标文件的内容拷贝到另外一个 ...