Ich möchte eine Funktion erstellen, die jede alte Zeichenfolge akzeptiert (normalerweise ein einzelnes Wort) und daraus irgendwie einen hexadezimalen Wert zwischen #000000
und generiert #FFFFFF
, damit ich sie als Farbe für ein HTML-Element verwenden kann.
Vielleicht sogar ein Hex-Kurzwert (zB :), #FFF
wenn das weniger kompliziert ist. In der Tat wäre eine Farbe aus einer "web-sicheren" Palette ideal.
javascript
string
colors
hex
Darragh Enright
quelle
quelle
parseInt(hexstr, 10)
. Verwenden Sie zum Konvertieren einer Ganzzahl in eine Hexadezimalzahln.toString(16)
, wobei n eine Ganzzahl ist.Antworten:
Portieren Sie einfach über Java aus Compute Hex Color Code für eine beliebige Zeichenfolge nach Javascript:
Um zu konvertieren, würden Sie tun:
quelle
("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"
Und ich verbessere Ihren Code durch Hinzufügen einer Multiplikation für den endgültigen Hashwert:return 100 * hash;
Hier ist eine Anpassung der Antwort von CD Sanchez, die konsistent einen 6-stelligen Farbcode zurückgibt:
Verwendung:
Beispiel:
http://jsfiddle.net/sUK45/
(Eine alternative / einfachere Lösung könnte die Rückgabe eines Farbcodes im Stil 'rgb (...)' beinhalten.)
quelle
Ich wollte einen ähnlichen Farbreichtum für HTML-Elemente. Ich war überrascht, dass CSS jetzt hsl () -Farben unterstützt. Eine vollständige Lösung für mich finden Sie unten:
Siehe auch So generieren Sie automatisch N "unterschiedliche" Farben. für mehr Alternativen ähnlicher.
In HSL ist sein Farbton, Sättigung, Leichtigkeit. Der Farbton zwischen 0 und 359 erhält also alle Farben. Die Sättigung ist, wie reich die Farbe sein soll. 100% funktioniert für mich. Und Helligkeit bestimmt die Tiefe, 50% sind normal, 25% sind dunkle Farben, 75% sind Pastellfarben. Ich habe 30%, weil es am besten zu meinem Farbschema passt.
quelle
Ich finde, dass das Erzeugen zufälliger Farben dazu neigt, Farben zu erzeugen, die nicht genug Kontrast für meinen Geschmack haben. Der einfachste Weg, dies zu umgehen, besteht darin, eine Liste mit sehr unterschiedlichen Farben vorab auszufüllen. Weisen Sie für jede neue Zeichenfolge die nächste Farbe in der Liste zu:
Obwohl dies auf nur 64 Farben begrenzt ist, finde ich, dass die meisten Menschen den Unterschied danach sowieso nicht wirklich erkennen können. Ich nehme an, Sie könnten immer mehr Farben hinzufügen.
Während dieser Code fest codierte Farben verwendet, wissen Sie zumindest während der Entwicklung garantiert genau, wie viel Kontrast Sie zwischen den Farben in der Produktion sehen werden.
Die Farbliste wurde aus dieser SO-Antwort entfernt . Es gibt andere Listen mit mehr Farben.
quelle
Ich habe eine Pull-Anfrage an Please.js geöffnet , mit der eine Farbe aus einem Hash generiert werden kann.
Sie können die Zeichenfolge einer Farbe wie folgt zuordnen:
Gibt beispielsweise
"any string goes here"
as zurück"#47291b"
und
"another!"
gibt as zurück"#1f0c3d"
quelle
Wenn Ihre Eingaben nicht unterschiedlich genug sind, damit ein einfacher Hash das gesamte Farbspektrum nutzen kann, können Sie anstelle einer Hash-Funktion einen gesetzten Zufallszahlengenerator verwenden.
Ich verwende den Farbcodierer aus Joe Freemans Antwort und David Baus gesetzten Zufallszahlengenerator .
quelle
Noch eine Lösung für zufällige Farben:
Es ist eine Mischung aus Dingen, die den Job für mich erledigen. Ich habe die JFreeman Hash-Funktion (auch eine Antwort in diesem Thread) und die Asykäri-Pseudozufallsfunktion von hier und etwas Auffüllen und Mathematik von mir selbst verwendet.
Ich bezweifle, dass die Funktion gleichmäßig verteilte Farben erzeugt, obwohl sie gut aussieht und genau das tut, was sie tun sollte.
quelle
'0'.repeat(...)
ist nicht gültig JavascriptMit dem
hashCode
wie in Cristian Sanchez 'Antwort mithsl
und modernem Javascript können Sie einen Farbwähler mit gutem Kontrast wie folgt erstellen:Da es sich um hsl handelt, können Sie die Luminanz skalieren, um den gewünschten Kontrast zu erzielen.
quelle
Hier ist eine Lösung, die ich gefunden habe, um auf der Grundlage einer Eingabezeichenfolge ästhetisch ansprechende Pastellfarben zu generieren. Es verwendet die ersten beiden Zeichen der Zeichenfolge als zufälligen Startwert und generiert dann R / G / B basierend auf diesem Startwert.
Es kann leicht erweitert werden, sodass der Startwert das XOR aller Zeichen in der Zeichenfolge ist und nicht nur die ersten beiden.
Inspiriert von David Crows Antwort hier: Algorithmus zur zufälligen Erzeugung einer ästhetisch ansprechenden Farbpalette
GIST ist hier: https://gist.github.com/ro-sharp/49fd46a071a267d9e5dd
quelle
Hier ist ein weiterer Versuch:
quelle
Alles was Sie wirklich brauchen ist eine gute Hash-Funktion. Auf Knoten benutze ich nur
quelle
Ich konvertiere dies für Java.
Panzer für alle.
quelle
Diese Funktion macht den Trick. Es ist eine Anpassung dieser, ziemlich längeren Implementierung dieses Repos .
quelle