Je veux créer une fonction qui accepte une ancienne chaîne (habituellement un seul mot) et de cette certaine façon de générer une valeur hexadécimale entre #000000
et #FFFFFF
, donc je peux l' utiliser comme une couleur pour un élément HTML.
Peut-être même une valeur hexadécimale abrégée (par exemple:) #FFF
si c'est moins compliqué. En fait, une couleur issue d'une palette «Web sécurisée» serait idéale.
javascript
string
colors
hex
Darragh Enright
la source
la source
parseInt(hexstr, 10)
. Pour convertir un entier en hexadécimal, utilisezn.toString(16)
, où n est un entier.Réponses:
Portage simplement sur Java du code de couleur hexadécimal Compute pour une chaîne arbitraire vers Javascript:
Pour convertir, vous feriez:
la source
("00" + ((this >> 24) & 0xFF).toString(16)).slice(-2) + ("00" + ((this >> 16) & 0xFF).toString(16)).slice(-2) + ("00" + ((this >> 8) & 0xFF).toString(16)).slice(-2) + ("00" + (this & 0xFF).toString(16)).slice(-2);
intToRGB(hashCode('hello1')) -> "3A019F"
intToRGB(hashCode('hello2')) -> "3A01A0"
Et j'améliore votre code en ajoutant une multiplication pour la valeur de hachage finale:return 100 * hash;
Voici une adaptation de la réponse de CD Sanchez qui renvoie systématiquement un code couleur à 6 chiffres:
Usage:
Exemple:
http://jsfiddle.net/sUK45/
(Une solution alternative / plus simple pourrait impliquer de renvoyer un code couleur de style 'rgb (...)'.)
la source
Je voulais une richesse de couleurs similaire pour les éléments HTML, j'ai été surpris de constater que CSS prend désormais en charge les couleurs hsl (), donc une solution complète pour moi est ci-dessous:
Voir aussi Comment générer automatiquement N couleurs "distinctes"? pour plus d'alternatives plus similaires à celle-ci.
En HSL sa teinte, sa saturation, sa légèreté. Ainsi, la teinte entre 0 et 359 obtiendra toutes les couleurs, la saturation est la richesse que vous voulez de la couleur, 100% fonctionne pour moi. Et la clarté détermine la profondeur, 50% est normal, 25% est des couleurs sombres, 75% est pastel. J'en ai 30% car il correspond le mieux à ma palette de couleurs.
la source
Je trouve que générer des couleurs aléatoires a tendance à créer des couleurs qui n'ont pas assez de contraste à mon goût. Le moyen le plus simple que j'ai trouvé pour contourner ce problème est de pré-remplir une liste de couleurs très différentes. Pour chaque nouvelle chaîne, attribuez la couleur suivante dans la liste:
Bien que cela ait une limite à seulement 64 couleurs, je trouve que la plupart des humains ne peuvent pas vraiment faire la différence après cela de toute façon. Je suppose que vous pouvez toujours ajouter plus de couleurs.
Bien que ce code utilise des couleurs codées en dur, vous avez au moins la garantie de savoir pendant le développement exactement le contraste que vous verrez entre les couleurs en production.
La liste des couleurs a été retirée de cette réponse SO , il existe d'autres listes avec plus de couleurs.
la source
J'ai ouvert une pull request vers Please.js qui permet de générer une couleur à partir d'un hachage.
Vous pouvez mapper la chaîne à une couleur comme ceci:
Par exemple,
"any string goes here"
retournera comme"#47291b"
et
"another!"
retourne comme"#1f0c3d"
la source
Si vos entrées ne sont pas suffisamment différentes pour qu'un simple hachage utilise tout le spectre de couleurs, vous pouvez utiliser un générateur de nombres aléatoires prédéfini au lieu d'une fonction de hachage.
J'utilise le code couleur de la réponse de Joe Freeman et le générateur de nombres aléatoires prédéfini de David Bau .
la source
Encore une autre solution pour les couleurs aléatoires:
C'est un mélange de choses qui fait le travail pour moi. J'ai utilisé la fonction JFreeman Hash (également une réponse dans ce fil) et la fonction pseudo aléatoire Asykäri d' ici et un peu de remplissage et de mathématiques de moi-même.
Je doute que la fonction produise des couleurs uniformément réparties, même si elle a l'air bien et fait ce qu'elle devrait faire.
la source
'0'.repeat(...)
n'est pas valide javascriptEn utilisant la
hashCode
réponse de Cristian Sanchez avechsl
un javascript moderne, vous pouvez créer un sélecteur de couleurs avec un bon contraste comme celui-ci:Comme il s'agit de hsl, vous pouvez mettre à l'échelle la luminance pour obtenir le contraste que vous recherchez.
la source
Voici une solution que j'ai trouvée pour générer des couleurs pastel esthétiquement agréables à partir d'une chaîne d'entrée. Il utilise les deux premiers caractères de la chaîne comme une graine aléatoire, puis génère R / V / B en fonction de cette graine.
Il pourrait être facilement étendu pour que la graine soit le XOR de tous les caractères de la chaîne, plutôt que seulement les deux premiers.
Inspiré par la réponse de David Crow ici: Algorithme pour générer de manière aléatoire une palette de couleurs esthétiquement agréable
GIST est ici: https://gist.github.com/ro-sharp/49fd46a071a267d9e5dd
la source
Voici un autre essai:
la source
Tout ce dont vous avez vraiment besoin est une bonne fonction de hachage. Sur le nœud, j'utilise juste
la source
Je convertis ceci pour Java.
Des chars pour tous.
la source
Cette fonction fait l'affaire. C'est une adaptation de cette implémentation assez longue de ce dépôt .
la source