Calculer les valeurs de couleur du vert au rouge
Je voudrais calculer la valeur de couleur en fonction de nombre.
0 -> pure red
100 -> pure green
example: 75 -> color, which is 75% from red to green.
J'en ai besoin pour l'expiration du comptoir, qui montre des couleurs appropriées comme des jours de compte à rebours.
C'est juste mathématiques simples 😉 Rouge = (1/255) * (Nombre/100), Vert = 255 * (Nombre / 100), Bleu = 0. C'est tout.
Merci. Écrire une réponse si vous voulez me faire accepter : )
J'ai juste posté une réponse 😉
Merci. Écrire une réponse si vous voulez me faire accepter : )
J'ai juste posté une réponse 😉
OriginalL'auteur Biker John | 2013-07-08
Vous devez vous connecter pour publier un commentaire.
En effet, vous pourriez aller pour la solution fournie par @KamilT. Inconvénient de cette méthode (omi), c'est que les couleurs de la moyenne (autour de 50) obtenir brunâtre et pas très agréable par rapport à votre entière rouge et vert.
Je pense qu'il serait beaucoup plus agréable à suivre le spectre de couleurs, et passant au-dessus de l'orange et le jaune, à la place de ce vilain brunâtre.
Cela peut facilement atteint en travaillant avec HSL valeurs plutôt que les valeurs RVB. Si vous définissez la valeur de la Teinte en fonction de votre nombre entre 0 et 100 pour une valeur comprise entre 0°(rouge) et 120°(vert), et de garder votre Saturation à 100% et votre Légèreté à 50%, vous devriez obtenir de belles couleurs vives.
J'ai trouvé un moyen pour convertir entre rgb et hsl ici: LGV à la conversion des couleurs RVB
Et j'ai écrit une fonction simple pour calculer votre valeur rvb à l'aide de la fonction de conversion à partir de la réponse ci-dessus:
Et j'ai mis en place un violon pour démontrer les diffrences entre la LGV méthode et la méthode RVB: http://jsfiddle.net/rE6Rk/1/
mise à jour plus polyvalent, version:
Si vous ne voulez pas travailler avec une gamme de rouge à vert, légèrement adapter la méthode ci-dessus. La valeur qui détermine la couleur réelle dans un
hsl
représentation est lahue
, alors que c'est celui que nous aurons besoin de calculer.Si vous définissez la portée de votre teinte, en fournissant les 0 et les 1 de la valeur en tant que paramètres, le calcul de la valeur de la teinte devient de base en mathématiques. Jetez un oeil à la mise à jour de la méthode:
Comme vous pouvez le voir j'ai changé l'API un peu. Les paramètres sont les suivants:
percentage
: une valeur entre 0 et 1hue0
: la valeur de la teinte de la couleur que vous souhaitez obtenir lors de lapercentage
est 0hue1
: la valeur de la teinte de la couleur que vous souhaitez obtenir lors de lapercentage
est de 1Aussi, il n'est plus besoin de calculer la valeur rvb, les navigateurs modernes soutien lgv valeurs.
Alors maintenant, vous pouvez utiliser la méthode comme suit:
Donc, si vous voulez aller dans le sens des aiguilles que vous avez à faire hue0 < hue1. Si vous voulez aller dans le sens antihoraire, vous avez à faire hue0 > hue1. Et comme elles sont en degrés, vous pouvez simplement ajouter ou de soustraire 360 pour forcer la direction. Vous pouvez même utiliser cette technique pour s'enrouler autour de la teinte cercle plusieurs fois.
J'ai créé un nouveau violon à démontrer: https://jsfiddle.net/r438s65s/
Que faire si je veux faire l'inverse? Du vert au rouge? Je ne suis pas la pleine compréhension de la logique ici. Ou si je veux faire du bleu au vert ?
J'ai mis à jour ma réponse pour vous avec le plus polyvalent de la méthode, et tenté d'expliquer la logique un peu plus loin.
Je ne comprends pas votre réponse. lgv est une fonction css, pourquoi la conversion? pourquoi le lien?
Regardez la version mise à jour @Blauhirn, "Aussi, il n'est plus besoin de calculer la valeur rvb, les navigateurs modernes soutien lgv valeurs."
OriginalL'auteur Pevara
La réponse par Pevara est grande. J'ai adapté sa jsfiddle à mes besoins, et c'est peut-être utile pour les autres aussi: http://jsfiddle.net/rE6Rk/8/
Il permet d'avoir une distribution inégale des couleurs. Dans mon cas, je voulais tout en dessous de 0.5 (50) afin d'être rouge. Et une 0.75 serait dans le milieu entre le rouge et le vert. Donc, au lieu de travailler dur avec les frontières de 0 et de 1, ils peuvent être à la fois décalé.
Les changements sont dans la numberToColorHsl() fonction:
* le " je " est un flottant 0-1 à la place de l'int de 0 à 100
* d'autres params min/max
Les visuels expliquer mieux que les mots.
OriginalL'auteur Fabian Kessler
C'est juste mathématiques simples 😉
C'est tout.
Red = 255 - (255 * (Number / 100))
?vous avez raison, la correction dès maintenant 😉
pas de travail, il est à seulement 2 couleurs vert et rouge, il doit être quelque chose comme le vert> orange> rouge
comment peut-on calculer la
blue
couleur oùNumber
facteur existent encore dans les mathématiques à la logique , tout comme vous avez calculé le rouge et le vert.OriginalL'auteur Kamil T