Erzeugt zufällige Farbe, die für Menschen unterscheidbar ist
Ich versuche, nach dem Zufallsprinzip generieren eine Farbe im hex in javascript.
Jedoch die Farben generiert werden, sind fast nicht zu unterscheiden von einander.
Gibt es eine Möglichkeit, es zu verbessern?
Hier ist der code, den ich verwende:
function randomColor(){
var allowed = "ABCDEF0123456789", S = "#";
while(S.length < 7){
S += allowed.charAt(Math.floor((Math.random()*16)+1));
}
return S;
}
Hörte ich etwas über HSL und HSV Farbe Modell kann aber nicht
es funktioniert in meinem code. Bitte helfen Sie.
Vielen Dank im Voraus
InformationsquelleAutor der Frage anuragsn7 | 2012-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie einen festen Satz von Farben, wie die, die in der jquery.color.js plugin.
Liste von Farben aus jquery.color.js plugin:
Der rest ist einfach Kommissionierung eine zufällige Eigenschaft aus einem Javascript-Objekt.
Mit
Colors.random()
vielleicht bekommen Sie eine lesbare Farbe. Ich habe sogar angetrieben-eine Beispiel hier.InformationsquelleAutor der Antwort Alexander
Der einfachste Weg zu Holen maximal verschiedenen Farben wäre die Verwendung von HSL-Werte anstelle von RGB und dann manipulieren Sie den Farbton, es hat einen Wert von 0 bis 360 Wert und umschlingt (0 ist rot, und so wird 360);
wenn Sie brauchen 10 unterscheidbaren Farben können Sie teilen Sie 360 durch 10 und dann wählen Sie die einzelnen Farben durch die Multiplikation der Wert von index (null-basiert).
Hier ist eine Beispiel-Funktion, können Sie wählen Sie eine Farbe aus :
Diese Weise können Sie mischen Sie die Farbauswahl durch Zufall als index, aber die Farben werden immer in der gleichen palette.
Dieser wählt eine zufällige Farbe aus einer palette von 10:
und so wird auch diese:
oder Sie können wählen Sie eine bestimmte Farbe aus der palette, wie der 9. color (index 8) aus der palette von 13:
Hier ist eine Geige zu spielen: http://jsfiddle.net/2UE2B/
InformationsquelleAutor der Antwort goran
Ich weiß ich bin sehr spät zu dieser party, aber ich schrieb eine etwas umfangreichere Funktion zu generieren, die eine Reihe von kontrastierenden zufällige Farben für ein anderes Projekt. Sie sind beide (zumindest teilweise) attraktiven und wirklich zufällige (nicht basierend auf vordefinierten Farben), aber mein code ist ein wenig komplizierter als einige der anderen Antworten (so ist es nicht nur erste Grundlagen)
Dies ist für Benutzer, die wollen, um mehr als eine zufällige Farbe auf Ihrer Seite, und wollen sicherstellen, dass keine zwei Farben sind zu ähnlich.
Fiddle
Bitte beachten Sie, obwohl ich nicht so in meinem Beispiel, dass es auch verwendet werden, um neue unterschiedliche, zufällige Farben in einem set:
InformationsquelleAutor der Antwort Scelesto
Was Sie sagen, ist, dass Sie nicht wollen, zu generieren Sie zufällige Farben, Sie sagen, dass Sie möchten, produzieren unterschiedliche Farben.
Finden Sie eine gute Anleitung, wie man es hier tun: http://krazydad.com/tutorials/makecolors.php .
Ich habe diese Geige mit den relevanten code aus dem tutorial, die zeigen, wie würden Sie generieren nicht wiederholenden Farben:
http://jsfiddle.net/rGL52/
Der einzige Unterschied von der tutorial-code ist, dass die makegradient () - Funktion gibt ein array von Farben, die Sie später anwenden wird, die in Ihrer Seite.
InformationsquelleAutor der Antwort Michal
Zur zufälligen Generierung Farben, Neige ich dazu, gehen Sie für etwas einfaches wie diese:
Ich bin mir nicht sicher, was du meinst, wenn du nicht mehr wiederzuerkennen. Diese Methode bietet nicht viel Anpassung, aber zumindest macht es einfach zu halten, zahlen nicht zu hell oder zu dunkel.
Wenn Sie möchten, geben größere Lücken zwischen den Farben erzeugt, könnten Sie versuchen, die Verringerung der Anzahl der erlaubten Zeichen. Ich habe eine Methode wie in der Vergangenheit, wo ich nur
0369cf
dem pool der Charaktere zu ziehen. Kombinieren Sie dies mit einem check auf Duplikate neigt dazu, mehr unterscheidbaren Farben, sowie nur unter Verwendung der#fff
3-Zeichen-syntax.Hier ist Ihre ursprüngliche Funktion geändert, um diese Methode zu verwenden:
InformationsquelleAutor der Antwort Robert Messerle
Versuchen Sie dies:
Ihn in Aktion zu sehen:
http://jsfiddle.net/3wjgG/1/
InformationsquelleAutor der Antwort Barry Chapman
Ich Stimme mit all den Antworten, die wir nicht wirklich wissen, was Sie hier erwartet...
Dies ist eine Möglichkeit, die Ihnen die Wahl zwischen rgb(r, g, b) die Ausgabe für css-Elemente, und die hex-Ausgabe...
Dies ist ein kurzes Beispiel, müssen Sie nur anpassen dieses Entwurfs, aber es funktioniert, wie es auf Firefox :
Dann können Sie den Wert abrufen, wie hier unten :
Ich hoffe das kann dir helfen.
Beste Grüße.
InformationsquelleAutor der Antwort tatactic
Zunächst, warum bauen Sie hex-Werte aus strings? Verwenden Sie einfach die zahlen für die Werte, dann die Ausgabe mit so etwas wie
yourNumber.toString(16)
.Dann, um die Farben deutlicher, verwenden Sie nicht den vollen Bereich von 0 bis 255 für jede Farbe Komponente, aber vielleicht gehen Sie in Sprüngen von 10, oder 20, oder was auch immer Sie brauchen, zu generieren, die weit genug Unterschiede.
InformationsquelleAutor der Antwort Cylindric