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>
时间: 2024-09-30 17:48:06

JS实现颜色值的转换的相关文章

js日期格式简单转换代码

js日期格式简单转换代码: 未经修饰的东西总是狂野粗糙的,比如人没有经过良好的教育,这人可能会有各种问题,同样js中的时间格式也是如此,所以要对时间进行一定的格式化操作,下面是一段非常简单的代码实例和大家分享一下. 代码如下: function dateStr(x,y) { var z={ y:x.getFullYear(), M:x.getMonth()+1, d:x.getDate(), h:x.getHours(), m:x.getMinutes(), s:x.getSeconds() }

js二进制和十进制转换代码

js二进制和十进制转换代码:十进制和二进制的转换是在编码中是时常用到的,下面就是一段这样的代码实例,希望能够给需要的朋友带来帮助.代码实例如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="author" conte

C# 对JS编码/解码进行转换

public static class Extension { #region [编码/解码统一转换] /// <summary> /// /// </summary> /// <param name="str"></param> /// <param name="isEscape">True为Encode;False为Decode</param> /// <returns><

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

JS中应用正则表达式转换大小写,代码很简单,看代码: 以下首字母大写,其它字母小写 [javascript] view plaincopy <script type="text/javascript"> function replaceReg(reg,str){ str = str.toLowerCase(); return str.replace(reg,function(m){return m.toUpperCase()}) } var reg = /\b(\w)|\s

JS将/Date(1446704778000)/转换成string

JS将/Date(1446704778000)/转换成str:var dateStr = eval(ele.add_time.replace(/\/Date\((\d+)\)\//gi, "new Date($1)")).format('yyyy-M-d h:m'); // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能

js实现简繁体转换

/**以下为JS 可放与一个.js文件**/ //此转换代码转贴自网络,经本人修改特此说明 var Default_isFT = 0;        //默认是否繁体,0-简体,1-繁体 var StranIt_Delay = 50;      //翻译延时毫秒(设这个的目的是让网页先流畅的显现出来) /** * iframe 的集合 */ var iframeArr = new Array(); /** * 点击对象 */ var StranLink_Obj ; /** * cookie 名称

微信小程序使用wxs在页面中调用js函数,颜色值格式转换 rgb和十六进制的转换

<wxs module="filter"> var filter = { numberToFix: function (hex) { // 16进制颜色值的正则 // var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; var reg = getRegExp('^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$','g'); console.log(reg); console.log('结束'); // 把颜色值

js数据类型隐式转换笔记以及js包装对象

“37”+7              //377 “37”-7              //30 巧用+/-规则  变字符串  x+''   变数字x-0 js里面的==是不严格等于 “123” == 123 0 == false nul l== undefined new  Object() == new Object() [1,2]==[1,2] 但是[1,2]===[1,2]是错的 因为比较的是对象的引用 ps: NaN值和任何东西比较都不相等 即便是不严格等于 ———————————

20170907笔记:JS对象&amp;jQuery对象转换

JS对象转到jQuery对象 // JS与jQuery对象互转 // JS获取对象 var obj = document.getElementById('id'); // 把JS对象转换到jQuery对象 var $obj = $(obj); jQuery对象转到JS对象 // JS与jQuery对象互转 // jQuery获取对象 var $obj = $('#id'); // jQuery对象转换到JS对象 var obj = $obj.get(0);