js实现的CSS color 十六进制与RGB值的转换

demo

;!function (str) {
            str.HEXtoRGB = function () {
                var col = this.slice(1).split('');
                if (/^[0-9A-Fa-f]{6}$/.test(col.join('')) || /^[0-9A-Fa-f]{3}$/.test(col.join(''))) {
                    (col.length === 3) && !function () {
                        for (i = -3; i < 0; i++) {
                            col.splice(i, 0, '' + col.slice(i)[0])
                        }
                    } ();
                    return "rgb(" + parseInt(col.slice(0, 2).join(''), 16) + "," + parseInt(col.slice(2, 4).join(''), 16) + "," + parseInt(col.slice(4, 6).join(''), 16) + ")";
                } else { return "rgb(0,0,0)" };
            };
            str.RGBtoHEX = function () {
                var col = this.toUpperCase();
                col = col.replace(/^RGB\((\d{1,3}?)\,(\d{1,3}?)\,(\d{1,3}?)\)$/, function (core, $1, $2, $3) {
                    var a = +$1, b = +$2, c = +$3, cache = "";
                    (a < 256 && b < 256 && c < 256) ? cache = '#' + a.toString(16) + b.toString(16) + c.toString(16) : cache = "#000";
                    return cache;
                })
                return col;
            }
        }(String.prototype)

    alert('#978'.HEXtoRGB().RGBtoHEX());

补充:
#fed到#ffeedd还有另一种转换方法:
https://jsfiddle.net/yujg/fo4ryt3d/

'#fed'.replace(/^#(\w)(\w)(\w)$/,'#$1$1$2$2$3$3')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值