Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript将RGBA转换为十六进制颜色代码_Javascript_Css - Fatal编程技术网

如何使用javascript将RGBA转换为十六进制颜色代码

如何使用javascript将RGBA转换为十六进制颜色代码,javascript,css,Javascript,Css,我尝试将rgba转换为十六进制颜色代码,但无法转换我能够转换的剩余颜色的不透明度值 下面是我的代码 var colorcode=“rgba(0,0,0,0.74)”; var finalCode=rgba2hex(颜色代码) 函数rgba2hex(orig){ var a,百分之, rgb=原始替换(/\s/g')。匹配(/^rgba?\((\d+)、(\d+)、(\d+)、(\d+)、([^、\s)]+)?/i), alpha=(rgb&&rgb[4]| |“”).trim(), 十六进制=

我尝试将
rgba
转换为十六进制颜色代码,但无法转换我能够转换的剩余颜色的不透明度值

下面是我的代码

var colorcode=“rgba(0,0,0,0.74)”;
var finalCode=rgba2hex(颜色代码)
函数rgba2hex(orig){
var a,百分之,
rgb=原始替换(/\s/g')。匹配(/^rgba?\((\d+)、(\d+)、(\d+)、(\d+)、([^、\s)]+)?/i),
alpha=(rgb&&rgb[4]| |“”).trim(),
十六进制=rgb?

(rgb[1]| 1由于rgba()符号中的alpha通道表示为0~1值,因此在尝试将其转换为十六进制形式之前,需要将其乘以255:

var colorcode=“rgba(0,0,0,0.74)”;
var finalCode=rgba2hex(颜色代码)
函数rgba2hex(orig){
var a,百分之,
rgb=原始替换(/\s/g')。匹配(/^rgba?\((\d+)、(\d+)、(\d+)、(\d+)、([^、\s)]+)?/i),
alpha=(rgb&&rgb[4]| |“”).trim(),
十六进制=rgb?

(rgb[1]| 1Great@kaido,我试过这种方法

function rgba2hex(orig) {
      var a, isPercent,
        rgb = orig.replace(/\s/g, '').match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i),
        alpha = (rgb && rgb[4] || "").trim(),
        hex = rgb ? 
        (rgb[1] | 1 << 8).toString(16).slice(1) +
        (rgb[2] | 1 << 8).toString(16).slice(1) +
        (rgb[3] | 1 << 8).toString(16).slice(1) : orig;
          if (alpha !== "") {
            a = alpha;
          } else {
            a = 01;
          }

          a = Math.round(a * 100) / 100;
            var alpha = Math.round(a * 255);
            var hexAlpha = (alpha + 0x10000).toString(16).substr(-2).toUpperCase();
            hex = hex + hexAlpha;

      return hex;
}
函数rgba2hex(orig){ var a,百分之, rgb=原始替换(/\s/g')。匹配(/^rgba?\((\d+)、(\d+)、(\d+)、(\d+)、([^、\s)]+)?/i), alpha=(rgb&&rgb[4]| |“”).trim(), 十六进制=rgb?
(rgb[1]| 1如果将rgba颜色作为字符串,则可以执行以下操作

const color = 'rgba(249,6,6,1,0)';
const rgba = color.replace(/^rgba?\(|\s+|\)$/g, '').split(',');

const hex = `#${((1 << 24) + (parseInt(rgba[0]) << 16) + (parseInt(rgba[1]) << 8) + parseInt(rgba[2])).toString(16).slice(1)}`;
console.log(hex); // #f90606
const color='rgba(249,6,6,1,0)';
const rgba=color.replace(/^rgba?\(|\s+|\)$/g',).split(',');

const hex=`#${((1只需创建一个更有效的函数!代码与上面相同

var颜色;
函数十六进制代码(颜色){
const rgba=color.replace(/^rgba?\(|\s+|\)$/g',).split(',');

const hex=`#${((1)github上的color2color库可能就是您想要的:看看哪一个会给您一个RGBA数组,如果需要的话,它可以简单地转换为十六进制。刚刚测试了您的函数,它不适合alpha通道。这不适合alpha通道