3 votes

Javascript - "Une teinte plus foncée"

Est-il possible d'utiliser le javascript pour déterminer la couleur qui est une nuance plus foncée que le fond actuel ? Peut-être une addition/soustraction hexadécimale ?

J'ai un menu qui peut être de n'importe quelle couleur et si ce n'était pas trop difficile, ce serait génial si le sous-menu pouvait être d'une nuance plus foncée. Quelqu'un sait-il comment obtenir cet effet ?

9voto

Max Points 9361

Quelque chose comme ça :

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;
}

Utilisation :

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

Voici un exemple de code pour le tester : http://pastebin.com/g6phySEv

2voto

second Points 11641

Comme le fait remarquer AB, la notion de "nuance" n'est pas très bien définie. Néanmoins, il est peut-être plus facile d'y penser dans le cadre d'une autre représentation de la couleur, comme le "V" dans le document hsv .

vous pouvez soit convertir, diminuer v et reconvertir, soit trouver à quoi correspond la diminution de v en hexagone rgb.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X