Javascript - "Один оттенок темнее" - PullRequest
3 голосов
/ 04 августа 2010

Можно ли использовать javascript, чтобы определить, какой цвет на один оттенок темнее текущего фона? Может быть, какое-то шестнадцатеричное сложение / вычитание?

У меня есть меню, которое может быть любого цвета, и если бы оно не было слишком сложным, было бы здорово, если бы подменю было на один оттенок темнее. Кто-нибудь знает, как добиться этого эффекта?

Ответы [ 2 ]

9 голосов
/ 04 августа 2010

Примерно так:

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

2 голосов
/ 04 августа 2010

как комментирует AB, «тень» не очень хорошо определена. тем не менее, было бы легче думать об этом в некотором другом цветовом представлении, например, 'V' в hsv .

Вы можете либо преобразовать, уменьшить v и преобразовать обратно, либо выяснить, на что указывает уменьшение v в шестнадцатеричном rgb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...