Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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中获得渐变色(基于值的3种颜色)的十六进制代码_Javascript_Css_Colors_Gradient - Fatal编程技术网

如何在JavaScript中获得渐变色(基于值的3种颜色)的十六进制代码

如何在JavaScript中获得渐变色(基于值的3种颜色)的十六进制代码,javascript,css,colors,gradient,Javascript,Css,Colors,Gradient,我正试图得到十六进制代码在3个混合颜色的基础上的价值观 例子: 开始-FF0000(红色) 中间-#FFFF00(黄色) 结束-008000(绿色) 如果该值为: 1-十六进制代码为#FF0000 50-十六进制代码为#FFFF00 100-十六进制代码是#008000 在值之间,例如,1-50十六进制代码应与红黄色混合 50-100十六进制代码与黄绿色混合,基于值增加 我怎样才能做到这一点呢?试试看 功能更改(e){ box.style.background=gradient(e.targe

我正试图得到十六进制代码在3个混合颜色的基础上的价值观

例子:
  • 开始-FF0000(红色)
  • 中间-
    #FFFF00
    (黄色)
  • 结束-
    008000
    (绿色)
  • 如果该值为:

    1-十六进制代码为
    #FF0000

    50-十六进制代码为
    #FFFF00

    100-十六进制代码是
    #008000

    在值之间,例如,1-50十六进制代码应与红黄色混合

    50-100十六进制代码与黄绿色混合,基于值增加

    我怎样才能做到这一点呢?

    试试看

    功能更改(e){
    box.style.background=gradient(e.target.value/100、#FF0000’、#FFFF00’、#008000’);
    }
    //在ragne 0..1中,起始中间端为十六进制颜色,例如#FF00FF
    函数梯度(t,开始,中间,结束){
    返回t>=0.5线性(中间,结束,(t-.5)*2):线性(开始,中间,t*2);
    }
    线性函数(s、e、x){
    设r=byteLinear(s[1]+s[2],e[1]+e[2],x);
    设g=byteLinear(s[3]+s[4],e[3]+e[4],x);
    设b=byteLinear(s[5]+s[6],e[5]+e[6],x);
    返回“#”+r+g+b;
    }
    //a、b是从00到FF的十六进制值;x是范围为0..1的实数
    函数byteLinear(a,b,x){
    设y=('0x'+a)*(1-x)+('0x'+b)*x)|0;
    返回y.toString(16).padStart(2,'0')//十六进制输出
    }
    #方框{宽度:50px;高度:50px;背景:FF0000}

    尝试了链接中的内容,但没有找到任何内容。请展示您尝试使用该功能的情况,并解释它是如何失败的,因为根据您的描述,当前的答案也是您问题的正确答案。