Die CSS-Präprozessoren Sass und Less können jede Farbe nehmen und sie um einen bestimmten Wert darken() (abdunkeln) oder lighten() (aufhellen). Dies ist jedoch in JavaScript nicht eingebaut. Diese Funktion nimmt Farben im Hex-Format (d. h. #F06D06, mit oder ohne Hash) und hellt sie auf oder dunkelt sie mit einem Wert ab.
function LightenDarkenColor(col, amt) {
var usePound = false;
if (col[0] == "#") {
col = col.slice(1);
usePound = true;
}
var num = parseInt(col,16);
var r = (num >> 16) + amt;
if (r > 255) r = 255;
else if (r < 0) r = 0;
var b = ((num >> 8) & 0x00FF) + amt;
if (b > 255) b = 255;
else if (b < 0) b = 0;
var g = (num & 0x0000FF) + amt;
if (g > 255) g = 255;
else if (g < 0) g = 0;
return (usePound?"#":"") + (g | (b << 8) | (r << 16)).toString(16);
}
Verwendung
// Lighten
var NewColor = LightenDarkenColor("#F06D06", 20);
// Darken
var NewColor = LightenDarkenColor("#F06D06", -20);
Demo
Siehe den Pen
Farbänderung in JavaScript von Chris Coyier (@chriscoyier)
auf CodePen.
Wenn Sie sich für die programmatische Arbeit mit Farben interessieren (über das Aufhellen und Abdunkeln hinaus), schauen Sie sich chromath an.
oder http://chrisasher.com/sassycolours/ für Sass-Farbschemata
Danke!
Ich denke, es wäre sehr nützlich, Hex-Farben in Zellen hinzuzufügen, z.B.
nach Zeile #54 $(this).css(“background”, randColor);
fügen Sie diese Zeile hinzu: $(this).html(randColor);
und
nach Zeile #63 $(el).css(“background-color”, adjustedColor);
fügen Sie die Zeile $(el).html(adjustedColor); hinzu
Funktioniert das mit jedem Hex-Code? Ich benutze Folgendes
Und ich erhalte die Ausgabe
„#a703d“
Es scheint korrekt zu sein, wenn ich eine 0 am Anfang hinzufüge, nämlich „#0a703d“
Das funktioniert nicht mit jeder Hex-Farbe.
Ich benutze #00baf1 und der zurückgegebene Wert, wenn ich ihn um -20 abdunkle, ist #baeb.
Hat jemand eine Lösung dafür??
Es ist eigentlich
#00beab.Ich hatte das gleiche Problem, dass die Funktion unbrauchbare Farbwerte zurückgab. Ich habe es behoben, indem ich den Ausgabestring mit Nullen auffüllte.
Danke, Frank
Das ist großartig! Funktioniert sehr gut mit den Grundfarben: #2D5C90 und #53acb2 und Aufhellung mit einem Wert von 120. Einfach zu verwenden.
Das ist kein CSS. Das ist ein JavaScript-Trick zur Farbänderung.
Hallo, was muss ich verwenden, um eine neutrale dunkle Farbe aufzuhellen? Ich möchte kein Weiß verwenden... Bitte helfen Sie.
Sie können die Farbe eines Elements aufhellen/abdunkeln, wenn Sie kombinieren
– :after und
– rgba(val,val,val,transp)
Hier ist, was ich auf meiner Website gemacht habe
.button{… position:relative;}
.button:hover:after{content:””;display:block;position:absolute;top:0;left:0;background:rgba(255,255,255,.5);}
Entschuldigung, ich wusste nicht, dass es abgeschnitten wird. Das ist der Rest
background:rgba(255,255,255,.5);
Danke. Schauen Sie sich colorglower.com an, es gibt hellere und dunklere Versionen eines Hex-Farb-Codes aus.
Hallo! Ich versuche, die Konvertierung zu verstehen, aber ich scheitere. Könnten Sie / jemand erklären, wie die bitweisen Operatoren dazu beitragen, die Farbe um den gegebenen Betrag aufzuhellen?
Hallo Chris,
Ich liebe Ihre Website. Ich habe ein Skript erstellt, um Farbschattierungen und Familiennamen zu erstellen, und ich habe mich stark auf diesen Artikel verlassen.
Ich wollte nur sagen, dass ich einen Tippfehler entdeckt habe, der ziemlich wichtig ist!
In Ihrem Code sollte
b(blau) eigentlichg(grün) sein.Wenn Sie dies tun:
console.log(col, [(num >> 16), (num & 0x0000FF), ((num >> 8) & 0x00FF)]);in Zeile 31 (nachdem num zugewiesen wurde) veranschaulicht klar, dass das angegebene RGB nicht mit dem Hex übereinstimmt, aber das angegebene "rbg" übereinstimmt.Mit den Änderungen von FRANK hat es bei mir funktioniert... Danke
Ihr Code hat einige Fehler (einige Ergebnisse liefern z. B. #004a, aber es wird #00004a benötigt). Ich habe etwas korrigiert. Dieser Code, den ich verwende
function LightenDarkenColor(col, amt) {
var usePound = false;
}
function colorToHex(color) {
if (color.substr(0, 1) === ‘#’) {
return color;
}
var digits = /(.*?)rgb((\d+),\s?(\d+),\s?(\d+))/.exec(color);
}
Fügen Sie .padStart(6, ‘0’) am Ende hinzu! Ich hing eine halbe Stunde lang an einem Fehler fest, bevor ich merkte, dass die Farbzeichenkette zu wenige Ziffern hatte...
lightenDarkenColor(“#137713”, -20) funktioniert nicht und gibt #6300 zurück.
Vielen Dank! Sehr nützlich für mich.
Dies ist eine Kopie des Codes, der ursprünglich von PimpTrizkit in einem Stackoverflow-Thread geschrieben wurde. Der von PimpTrizkit seitdem entwickelte aktualisierte Code ist hier zu finden: https://github.com/PimpTrizkit/PJs/wiki/12.-Shade,-Blend-and-Convert-a-Web-Color-(pSBC.js)#stackoverflow-archive-begin
Leser Robert Joosen sagt, das sei das, was für ihn funktionierte.
Dies lieferte auch bessere Ergebnisse für mich. Danke!
Heute können Sie
filter: brightnessverwendenhttps://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/brightness
Wow! Hey! Ich sehe meinen Code hier in diesem Artikel. Ich erinnere mich, das geschrieben zu haben, cool! Eigentlich ist es ziemlich peinlich, weil das die schlechteste Version war. Auf jeden Fall ist diese Version der Funktion voller Probleme. Wie viele von Ihnen bemerkt haben. Auch, wie James in einem Kommentar oben erwähnt hat, ist dies die ursprüngliche Frage/das ursprüngliche Posting. Nicht die Antwort/Lösung. Die ursprüngliche Frage wurde vor langer Zeit auf Stackoverflow gestellt, hier:-> StackOverflow
Scrollen Sie nach unten zur Akzeptierten Antwort und Sie können sehen, was aus diesem Projekt geworden ist. Die aktuelle Version ist sehr vielseitig und schnell. Mit mehreren schönen Funktionen. Funktioniert erstaunlich gut. Aber unleserlich.
Aber ja, die aktuelle Version ist Teil einer kleinen Bibliothek anderer JavaScript-Funktionen, die ich ebenfalls erstellt habe. Verfügbar hier:-> GitHub
Wann wurde dieser Artikel geschrieben? Weil ich überrascht bin, dass Herr Coyier die alte/schlechte Version verwendet hat, die aktuelle Version wird... auf derselben Seite... schon seit mehreren Jahren gepostet.
PT
ps. Bei näherer Betrachtung, vielleicht weil sie unleserlich ist, lol
Keine Auswirkung auf die Funktionalität, aber es ist RGB, nicht RBG, bitte vertauschen Sie die Variablennamen :)
Vereinfachte Version