如何在php中找到更轻或更暗版本的十六进制代码的十六进制代码

Dav*_*nce 1 html php jquery color-codes

我试图通过PHP或jQuery 来实现这个人做什么.基本上我有一个十六进制颜色代码,比如#FF0000,它是红色的.如何找到这种颜色的深色或浅色十六进制颜色代码.

要清除:我想采用十六进制颜色代码(#FF0000),并找到该颜色代码更浅或更深色调的正确十六进制颜色代码.

可以用PHP或jQuery完成,我可以通过PHP改变颜色,因为服务器处理页面.

我不想使用第三方jQuery插件来实现这一点,但是如果它超级复杂的话,我会这样做.

Nie*_*sol 5

当你说"更轻的版本"(或"更黑的版本")时,有很多可能性.举例来说,你可以采取#ff0000和具有253"黑暗的版本",从#010000#fe0000.同样,你可以有253"较轻的版本",从#ff0101#fffefe.所以你的问题定义不明确.

我将在这个答案中假设,"较轻的版本",你的意思是在颜色上涂上50%透明白色的结果,而在颜色上涂上"深色"的结果,但是黑色.

无论如何,您应该始终从十六进制代码中提取数字:

// assuming input of form "#RRGGBB"
$col = Array(
    hexdec(substr($input,1,2)),
    hexdec(substr($input,3,2)),
    hexdec(substr($input,5,2))
);
Run Code Online (Sandbox Code Playgroud)

现在您已经拥有了它,您可以轻松应用"叠加层":

$darker = Array(
    $col[0]/2,
    $col[1]/2,
    $col[2]/2
);
$lighter = Array(
    255-(255-$col[0])/2,
    255-(255-$col[1])/2,
    255-(255-$col[2])/2
);
Run Code Online (Sandbox Code Playgroud)

然后将它们转换回十六进制代码是一件简单的事情:

$darker = "#".sprintf("%02X%02X%02X", $darker[0], $darker[1], $darker[2]);
$lighter = "#".sprintf("%02X%02X%02X", $lighter[0], $lighter[1], $lighter[2]);
Run Code Online (Sandbox Code Playgroud)

完成!


Dru*_*ska 5

我建议使用TinyColor颜色处理微框架.

tinycolor.darken( '#FF0000').toHexString()