Javascript 根据在以前的输入中输入的HexColor,自动将输入更新为较暗的HexColor
以下是我希望最终产品能起到的作用。假设我有两个输入:Javascript 根据在以前的输入中输入的HexColor,自动将输入更新为较暗的HexColor,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,以下是我希望最终产品能起到的作用。假设我有两个输入: <form id="builder"/> <input type="text" name="background_color" /> <input type="text" name="border_color" /> </form> 假设用户在“背景颜色”输入中输入此十六进制颜色代码:\FF8CA9(浅粉色)。我想在“border_color”输入中自动添加此颜色十六进制代码的较暗色调:比
<form id="builder"/>
<input type="text" name="background_color" />
<input type="text" name="border_color" />
</form>
假设用户在“背景颜色”输入中输入此十六进制颜色代码:\FF8CA9
(浅粉色)。我想在“border_color”输入中自动添加此颜色十六进制代码的较暗色调:比如说#D63E64
(深粉色)
因此,是否有可能1)找到输入“背景颜色”中输入的颜色的较暗色调,并生成其十六进制颜色代码,2)自动将其放置在输入“边框颜色”中而无需页面刷新
我不知道如何用另一种方式来解释,我知道这听起来可能令人困惑,但如果你不理解某些部分,请问我
其他信息:如果需要使用某种javascript,最好使用jQuery解决方案。只需将其RGB值乘以某个值(或转换为HSV并修改V),即可获得更亮或更暗的颜色
请参阅。我找到了一段旧代码,它完全符合您的要求。它可能需要一些调整。 按如下方式运行:
add_to_color('#996600', 10);
每r g和b值加10。这会使颜色变浅。要使颜色更深,请使用-10
function add_to_color(hex, addDec)
{
hex = hex.replace('#', '');
rDec = Hex2Dec(hex.substr(0,2));
gDec = Hex2Dec(hex.substr(2,2));
bDec = Hex2Dec(hex.substr(4,2));
if( rDec < -addDec || gDec < -addDec || bDec < -addDec )
{
return '#'+hex;
}
rDec = rDec + addDec;
gDec = gDec + addDec;
bDec = bDec + addDec;
hex = "#"+ Dec2Hex(rDec)+Dec2Hex(gDec)+Dec2Hex(bDec);
return hex;
}
function Hex2Dec(HexVal)
{
HexVal=HexVal.toUpperCase();
var DecVal=0;
var HV1=HexVal.substring(0,1);
DecVal=(HexChars.indexOf(HV1)*16);
HV1=HexVal.substring(1);
DecVal+=HexChars.indexOf(HV1);
return DecVal;
}
// Created by T.N.W.Hynes - (c) 2002 PalandorZone.com ... Use it freely but leave this line intact
// Conversion function for Decimal to Hexadecimal - 255 max
function Dec2Hex(DecVal)
{
DecVal=parseInt(DecVal);
if (DecVal > 255 || DecVal < 0)
{
DecVal=255;
}
var Dig1 = DecVal % 16;
var Dig2 = (DecVal-Dig1) / 16;
var HexVal = HexChars.charAt(Dig2)+HexChars.charAt(Dig1);
return HexVal;
}
函数添加到颜色(十六进制,addDec)
{
十六进制=十六进制。替换('#','');
rDec=Hex2Dec(hex.substr(0,2));
gDec=Hex2Dec(hex.substr(2,2));
bDec=Hex2Dec(十六进制substr(4,2));
如果(rDec<-addDec | gDec<-addDec | bDec<-addDec)
{
返回“#”+十六进制;
}
rDec=rDec+addDec;
gDec=gDec+addDec;
bDec=bDec+addDec;
hex=“#”+Dec2Hex(rDec)+Dec2Hex(gDec)+Dec2Hex(bDec);
返回十六进制;
}
函数Hex2Dec(HexVal)
{
HexVal=HexVal.toUpperCase();
var-DecVal=0;
var HV1=六进制子串(0,1);
DecVal=(十六进制索引)(HV1)*16);
HV1=HexVal.子串(1);
DecVal+=HexChars.indexOf(HV1);
返回DecVal;
}
//由T.N.W.Hynes-(c)2002 PalandorZone.com创建。。。可以自由使用,但请保持此线路完整
//十进制到十六进制的转换函数-最大值255
函数Dec2Hex(DecVal)
{
DecVal=parseInt(DecVal);
如果(De)