将十六进制转换为 RGBA

新手上路,请多包涵

我的小提琴 - http://jsbin.com/pitu/1/edit

我想尝试一个简单的十六进制到 rgba 的转换。我使用过的浏览器默认使用 rgb 渲染颜色,因此当使用 farbtastic 颜色选择器时,我通过获取十六进制值生成的背景颜色将十六进制值转换为 rgb(默认情况下为 rgb = 简单转换)

我尝试将 ) 符号替换为 , 1) ,但这没有用,所以我去看看如何将 rgb 转换为 rgba,但我仍然遇到问题。

jQuery

 $('.torgb').val($('#color').css('background-color'));
$('.torgba').val().replace(/rgb/g,"rgba");

目标

在此处输入图像描述

编辑

TinyColor 是一个很棒的颜色处理 js 库,它可以完成我在这里想要的一切以及更多。我想你们可能想试一试! - https://github.com/bgrins/TinyColor

原文由 Michael Schwartz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 860
2 个回答
//If you write your own code, remember hex color shortcuts (eg., #fff, #000)

function hexToRgbA(hex){
    var c;
    if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){
        c= hex.substring(1).split('');
        if(c.length== 3){
            c= [c[0], c[0], c[1], c[1], c[2], c[2]];
        }
        c= '0x'+c.join('');
        return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+',1)';
    }
    throw new Error('Bad Hex');
}

hexToRgbA('#fbafff')

/*  returned value: (String)
rgba(251,175,255,1)
*/

原文由 kennebec 发布,翻译遵循 CC BY-SA 4.0 许可协议

@ElDoRado1239 的想法是正确的,但还有一种更简洁的方法:

 function hexToRGB(hex, alpha) {
    var r = parseInt(hex.slice(1, 3), 16),
        g = parseInt(hex.slice(3, 5), 16),
        b = parseInt(hex.slice(5, 7), 16);

    if (alpha) {
        return "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
    } else {
        return "rgb(" + r + ", " + g + ", " + b + ")";
    }
}

hexToRGB('#FF0000', 0.5);

原文由 AJFarkas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题