Javascript - “一个阴影更暗”

时间:2010-08-04 08:40:03

标签: javascript hex

是否可以使用javascript来确定哪个颜色比当前背景更暗?也许是一些十六进制加法/减法?

我有一个可以是任何颜色的菜单,如果它不是太难,如果子菜单可能是一个更暗的颜色将是很好的。有谁知道如何实现这种效果?

2 个答案:

答案 0 :(得分:9)

这样的事情:

function shadeColor(color, shade) {
    var colorInt = parseInt(color.substring(1),16);

    var R = (colorInt & 0xFF0000) >> 16;
    var G = (colorInt & 0x00FF00) >> 8;
    var B = (colorInt & 0x0000FF) >> 0;

    R = R + Math.floor((shade/255)*R);
    G = G + Math.floor((shade/255)*G);
    B = B + Math.floor((shade/255)*B);

    var newColorInt = (R<<16) + (G<<8) + (B);
    var newColorStr = "#"+newColorInt.toString(16);

    return newColorStr;
}

用法:

var newColor = shadeColor("#AA2222", -10);
alert(newColor); //Results in #a32020

以下是测试它的示例代码:http://pastebin.com/g6phySEv

答案 1 :(得分:2)

作为AB评论,“阴影”的定义不是很明确。尽管如此,在其他颜色表示中可能更容易想到这一点,例如hsv中的“V”。

你可以转换,减少v并转换回来,或者找出减少v映射到rgb hex的内容