Riesige schlaffe lange Hosen? Stahl mit hoher Festigkeit und niedriger Legierung? NEIN, wir sprechen über Farbton, Sättigung, Helligkeit und Alpha, und das ist eine Möglichkeit, Farbe in CSS zu deklarieren. Es sieht so aus
#some-element {
background-color: hsla(170, 50%, 45%, 1);
}
Es ist ähnlich wie RGBa, da Sie drei Werte deklarieren, die die Farbe bestimmen, und dann einen vierten Wert für die Transparenzstufe. Sie können unten mehr über die Browserunterstützung lesen, aber grundsätzlich unterstützt jeder Browser, der rgba() unterstützt, auch hsla().
Es gibt eine neue Syntax für HSL- und RGB-Farben! Jetzt müssen Sie keine Kommas oder das "a" in beiden Funktionen verwenden, um eine Alpha-Transparenz einzustellen. Stattdessen verwenden wir einen Schrägstrich (/) vor dem Alpha-Wert. Z. B. hsl(170 50% 45% / 1) anstelle von hsla(170, 50%, 45%, 1). Lesen Sie mehr über die Änderung und andere aktualisierte CSS-Farbfeatures.
- Farbton – Denken Sie an ein Farbrad. Um 0o und 360o sind Rottöne, 120o sind Grüntöne, 240o sind Blautöne. Verwenden Sie alles zwischen 0-360. Werte darüber und darunter werden modulo 360 berechnet.
- Sättigung – 0% ist komplett entsättigt (Graustufen). 100% ist voll gesättigt (volle Farbe).
- Helligkeit – 0% ist komplett dunkel (schwarz). 100% ist komplett hell (weiß). 50% ist durchschnittliche Helligkeit.
- Alpha – Deckkraft-/Transparenzwert. 0 ist vollständig transparent. 1 ist vollständig opak. 0,5 ist 50% transparent.
Lassen Sie uns eintauchen.
Warum ist es cool?
Der eigentliche Reiz von HSLa liegt darin, dass es intuitiver ist, was sich bei der Änderung der Werte auf die Farbe auswirkt. Eine Erhöhung des zweiten Wertes erhöht die Sättigung dieser Farbe. Eine Verringerung des dritten Wertes verringert die Helligkeit dieser Farbe. Das macht das Erstellen eigener Farbvariationen im Handumdrehen *viel einfacher*. Ich wette, die meisten von uns können keine schönen und konsistenten Farbvariationen auf diese Weise mit dem RGBa-Modell erstellen.
Das HSLa-Modell erleichtert auch die programmatische Änderung von Farbwerten erheblich. Sehen Sie sich das Demo-Tool an, das dies hervorhebt.
Warum wird es weniger genutzt?
Dies ist meine große Annahme, aber soweit ich das beurteilen kann, wird HSLa in der Praxis *viel* weniger genutzt als RGBa. Wenn Sie Ideen haben, warum das so ist, teilen Sie diese bitte in den Kommentaren mit. Meine Theorie ist, dass HSL-Werte schwieriger zu bekommen sind, wenn man sie vom Bildschirm oder einem Photoshop-Dokument abgreift.

Ich schätze, Photoshop verwendet stattdessen das Hue/Saturation/Brightness-Modell. Ich verstehe ehrlich gesagt nicht ganz den Unterschied, aber als ich das hier zum ersten Mal versuchte, geriet ich in diese Situation.
HSLa-Werte erhalten
Es gibt eine kleine App für Mac namens Colors von Matt Patenaude.

Sie klicken einfach auf die Lupe und dann irgendwo auf den Bildschirm. Die Farbe wird dann in das Feld eingetragen. Dann können Sie die HSLa-Option auswählen und sie in Ihre Zwischenablage kopieren. Es gibt Einstellungen, um die Formatierung nach Ihren Wünschen anzupassen. Funktioniert ziemlich gut. Mein einziger Kritikpunkt ist, dass das kleine schwebende Fenster, wenn Sie es schließen, nicht wieder geöffnet wird, es sei denn, Sie beenden und starten die App neu. Könnte eine Snow-Leopard-Sache sein und die App wurde schon länger nicht mehr aktualisiert? Keine Ahnung.
Wenn jemand ein bevorzugtes Tool für Windows oder Linux zur Farberfassung mit HSLa als Funktion kennt, lassen Sie es mich bitte in den Kommentaren wissen, und ich werde es hier aktualisieren.
Browser-Unterstützung
Firefox 3.0+, Safari 3+, Chrome 6+ (vielleicht auch älter?), Opera 10+ (vielleicht auch älter?)
Wie üblich ist IE aus der Party ausgeschlossen. Sogar Version 8. Ich habe das Gefühl, dass Version 9 es unterstützen wird, habe aber noch keine Beweise. Hat jemand Version 9 installiert und kann es testen? Für IE können Sie einfach eine Fallback-Farbe deklarieren. IE 8 unterstützt auch RGBa nicht, daher ist die Verwendung eines Hex-Codes die beste Wahl.
#some-element {
background-color: #e2ecf0; /* Fallback */
background-color: hsla(190, 30%, 94%, 1);
background-color: hsl(190 30% 94% / 1);
}
Mein Werkzeug
Als Demo, wie einfach es ist, programmatisch Farbvariationen zu erstellen, habe ich den HSLa Explorer erstellt. Es gibt zwei Schieberegler auf der Seite. Der obere steuert den Farbtonwert und der zweite steuert den Opazitätsgrad. Er nimmt diese Werte und erstellt ein Raster aus 100 Farbvariationen, bei denen Sättigung und Helligkeit in einer Matrix variiert werden.
IE mag aus irgendeinem Grund etwas in JavaScript (in der Demo) nicht, aber egal, IE mag HSLa sowieso nicht. Danke an Matthieu Sieben, der bei der Verbesserung der Demo geholfen hat.
Weitere Werkzeuge
- HSL Color Picker von Brandon Mathis
- HSL Random Color Generator von Matt Groeber
Das ist ein großartiges Werkzeug, um die HSLa verschiedener Farb-Arrays zu finden.
Danke für HSLa Explorer.
Das scheint zu funktionieren. Ich habe einen Hex-Wert, den ich hatte, eingefügt.
Ich habe mir diese Tabelle angesehen, sehr gute Arbeit an diesem Werkzeug.
Ich denke, ich werde versuchen, etwas mit dieser Art von Farbcode zu machen... Mal sehen...
Danke.
„HSLa wird in der Praxis viel weniger genutzt als RGBa. Wenn Sie Ideen haben, warum das so ist, teilen Sie diese bitte in den Kommentaren mit.“
„Wie üblich ist IE aus der Party ausgeschlossen. Sogar Version 8.“
Gibt es wirklich einen Vorteil bei der Verwendung von HSLa auf einer Live-Website, wenn man immer noch eine Fallback-Farbe deklarieren muss? Es ist großartig, um ein Farbschema zu entwickeln, aber wenn man es in RGBa konvertieren muss, könnte man genauso gut bei RGBa in seinem CSS bleiben.
Das ist nicht der Fall.
Fast jeder Browser, der RGBa unterstützt, unterstützt auch HSLa. Wenn Sie also derzeit RGBa in Ihren Designs verwenden, könnten Sie HSLa mit der gleichen Browserunterstützung verwenden. Ja, Sie müssen Fallbacks für IE deklarieren (Hex ist am besten), aber das müssen Sie auch für RGBa tun.
Großartig, Chris! Ich denke, HSLa wird unterschätzt, weil nicht viele Leute davon wissen. Es scheint, dass RGBa viel mehr beworben wurde.
Ich freue mich jedoch, dass Sie diesen Artikel veröffentlicht haben, denn HSLA sieht wirklich gut aus und verdient mehr Aufmerksamkeit.
HSL wird weitaus seltener verwendet als RGB, da HSL in CSS3 eingeführt wurde und kürzlich in Browsern unterstützt wurde. (Die Funktion hsla() wurde als Spiegelbild von rgba() hinzugefügt).
Ich denke auch, dass Sie die Gründe angeben sollten, *warum* HSL besser als RGB ist. Der Grund für die Einführung von HSL war:
– RGB ist hardwareorientiert: Es spiegelt die Verwendung von CRTs wider.
– RGB ist unintuitiv. Menschen können lernen, wie man RGB verwendet, aber eigentlich, indem sie verinnerlichen, wie man Farbton, Sättigung und Helligkeit oder etwas Ähnliches in RGB übersetzt.
(Quelle: HSL-Farbwerte)
Und ich kann bestätigen, dass HSLA in IE9 (neueste Version v1.9.7.7.66.6000) nicht unterstützt wird.
Nichtsdestotrotz ein toller Artikel.
#some-element {
background-color: #e2ecf0; /* Fallback */
background-color: hsla(190, 30%, 94%, 1);
}
Sollte die Fallback-Farbe nicht an zweiter Stelle stehen, falls die UA die hsla-Farbe nicht versteht und sie überspringt? Ich bin etwas verwirrt.
Das ist korrekt.
Wenn der Browser HSLA unterstützt, überschreibt er die vorherige Deklaration. Wenn nicht, ignoriert er sie und verwendet den Hex-Code.
Wow, tolle Arbeit an diesem Demo-Tool, ich konnte nicht aufhören, damit zu spielen... super!
Ich denke, die geringere Popularität des HSL-Farbraums liegt an der Art und Weise, wie die Konvertierung zu und von RGB durchgeführt wird und wie sie gespeichert wird. Es ist nicht wirklich schwierig zu berechnen, aber die geringe Auflösung, mit der die Werte gespeichert werden, verursacht Probleme bei der Bildverarbeitung.
Computer-Hardware und Kernkomponenten von grafikbezogener Software verstehen es nicht so gut wie RGB (oder CMY(K)), denn das ist die Sprache, die unsere Displays, Drucker und Kameras sprechen. HSL-Werte müssen also zu einem bestimmten Zeitpunkt der Verarbeitung immer in z. B. RGB konvertiert werden. Nun werden Farbwerte, unabhängig vom verwendeten Farbraum, typischerweise als Ganzzahlwerte mit einer Auflösung von z. B. 256 (RGB), 360 (H) oder nur 100 (S, L) Schritten dargestellt.
Nehmen Sie die HSL-Farben 346°,100%,20% und 15°,100%,20%, die gut unterscheidbar sind (dunkles Karmesinrot und Rot-Orange). Ziehen Sie nun die Sättigung dieser beiden Farben auf 5% und wieder auf 100% herunter – und aufgrund der immer noch zugrundeliegenden RGB-Arithmetik sind die beiden Farben nun perfekt identisch.
Der Grund dafür ist, dass je dunkler und blasser die Farben sind, desto größer ist die Farbtonänderung, die einer RGB-Wertänderung um 1 entspricht. (Entschuldigen Sie mein Englisch, ich hoffe, Sie verstehen es :)
Daher ist HSL in seiner üblichen Form bei der Bildverarbeitung ziemlich umständlich, solange das Bild selbst in RGB gespeichert ist.
Eine Lösung für dieses Problem könnte ganz einfach sein: Zulassen von Fließkommawerten für HSL, und die oben genannten Genauigkeitsprobleme verschwinden.
Davon abgesehen ist HSL hervorragend geeignet, um Farben intuitiv zu definieren und trägt erheblich zur Attraktivität von CSS3 bei. Kein Farb-Picking, kein endloses Trial-and-Error und keine Hex-Rechner mehr! Vor einiger Zeit habe ich HSL-Funktionen zu einer modifizierten phpBB-Template-Engine hinzugefügt und möchte sie nicht mehr missen. Es lohnt sich also definitiv die Aufmerksamkeit, die Sie ihm schenken.
Und für das Fallback-Zeug: Bitten Sie Ihren Perl-Geek von nebenan um ein schickes Fünfzeiler, um die Zeilen automatisch zu füllen :-)
„Wenn jemand ein bevorzugtes Tool für Windows oder Linux zur Farberfassung mit HSLa als Funktion kennt, lassen Sie es mich bitte in den Kommentaren wissen, und ich werde es hier aktualisieren.“
Nicht Windows oder Linux, aber ich benutze ColorTagGen (Mac). Ich mag die Möglichkeit, Farben anzupassen. Nutzt jemand etwas Besseres?
Ich liebe diesen Beitrag, ich kann nicht glauben, dass ich HSLa noch nie zuvor benutzt habe.
Das ist für mich so unter dem Radar. Lernen lernen lernen!
HSLa ist viel einfacher zu verwenden, da Sie Farb- und Schattierungsanpassungen vornehmen können, ohne Photoshop öffnen zu müssen, um einen RGB-Farbcode zu erhalten. Ich liebe es.
Es gibt kein Gerät mit HSL-Farbraum. Monitore arbeiten mit RGB, Drucker mit CMYK. HSL wird immer berechnet. Es hilft sehr bei der Erstellung von Farbharmonien und der natürlicheren Farbauswahl. HSL war eine Zwischenphase. Aber bei Webfarben macht es Sinn, da es im Webdesign kein wirkliches Farbmanagement gibt.
Es wäre schön, wenn es eine Möglichkeit gäbe, Teile des Werts zu "erben" – so zum Beispiel, wenn alle Überschriften ein dunkles Blau sein sollen, dann etwas wie:
hsla(inherit, inherit, 50%, inherit)verwenden, um bestimmte zu einem helleren Farbton derselben Farbe zu machen. Dann, wenn ich die Farbe aller Überschriften ändern möchte, könnte ich einfach den anfänglichen Farbtonwert ändern und die Helligkeitsvariationen beibehalten.Könnte mit einigen der CSS-Präprozessoren möglich sein, die es gibt...
Das ist ein wirklich interessanter Artikel – es ist nützlich, einige häufige Fehler zu kennen und wie man mit ihnen umgeht.
Ihr rockt immer. Dies ist ein besonderer Beitrag von Ihnen.
Eine Lösung für dieses Problem könnte ganz einfach sein: Zulassen von Fließkommawerten für HSL, und die oben genannten Genauigkeitsprobleme verschwinden.
Ich denke, es akzeptiert Fließkommawerte. Ob sie so verarbeitet werden, weiß ich nicht.
Wenn es für IE nicht funktioniert, verliert es einfach mein Interesse.
Nicht, dass ich IE mag oder so etwas, aber leider bin ich mehr ein IE-Debugger als ein Webentwickler, und alles, was in IE nicht funktioniert, macht mich verrückt.
Eine Auflösungsoption hinzugefügt, da Zellen nicht mehr so groß sein müssen
http://cl.ly/24de2bac721b4a8161f9
Okay, ich glaube, ich weiß, was bei Photoshop und HSL los ist.
Aber ich muss darüber irgendwo mit mehr Platz als einer Kommentarbox schreiben. =)
Der Kernpunkt ist: Teilen Sie die Helligkeit (B) in Photoshop durch 2, wenn Sie eine dunklere Farbe erhalten möchten. Teilen Sie die Sättigung (S) durch 2, wenn Sie eine hellere Farbe erhalten möchten. Es gibt ein paar Vorbehalte, aber es ist relativ einfach.
Sie können diese Art von Mathematik im Kopf durchführen, sobald Sie die Methode kennen. Mehr dazu kommt noch! Toller Beitrag, Chris.
Zusätzlich könnte dieser Farbwähler für Photoshop hilfreich sein: http://anastasiy.com/magicpicker
Er hat einen dreieckigen HSB-Wähler, der dem Funktionsprinzip von HSL ähnelt, mehr als die quadratische Auswahl.
Das "Rainbow"-Add-on für Firefox ermöglicht es Ihnen, die Farbe von Webseiten-Elementen zu inspizieren und liefert Hex-, RGB- und HSL-Werte. Es hat auch einen Farbwähler. Sie können jedoch nichts außerhalb der Seite auswählen.
https://addons.mozilla.org/en-US/firefox/addon/14328/
Warum konnte der Alpha-Wert nicht auch ein Prozentsatz sein?
Oder ist es wieder eine dieser Sachen, die vor langer Zeit entschieden wurden und für die niemand eine Erklärung finden kann (trotz Protokollen von Arbeitsgruppensitzungen, die bis zum Urknall zurückreichen)?
Gibt es professionelle Design-Software (wie Photoshop), die HSL anstelle von HSB verwendet?
Wenn nicht, warum hat die Gruppe HSL gegenüber HSB gewählt?
Wäre es nicht möglich, RGBa und HSLa und HSBa und vielleicht sogar Lab oder CMYK zu haben, wenn ein Browser-Entwickler Lust auf Vollständigkeit hat?
Jemand wird sowieso eine JavaScript-Funktion erstellen, die HSB in HSL umwandelt, also warum HSB nicht zum Standard hinzufügen?
Hier ist eine praktische SASS-Funktion für alle anderen, die wie ich danach gesucht haben und hierher gekommen sind – https://gist.github.com/voxpelli/1069204
Ich hoffe, Adobe wird HSL unterstützen. Je mehr Farbmodelle unterstützt werden, desto besser.
SASS ist ein serverseitiger CSS-Präprozessor, der auch HSLA, Mathematik, Verschachtelung und Mixins unterstützt. SASS gibt HSLA-Farben jedoch als Hex aus, damit es mit IE funktioniert. SASS lässt sich nahtlos in Ruby on Rails integrieren, aber die Kommandozeilenversion funktioniert für jedes Projekt. Halten Sie Ihre Stylesheets mit SASS DRY und Sie werden nie wieder etwas anderes verwenden.
HSL ist verwirrend für mich, weil
Sie müssen % für S und L hinzufügen, aber nicht für H (ich würde es bevorzugen, wenn Sie es gar nicht hinzufügen müssten)
Es passte nicht zu HSB von Photoshop, vielleicht habe ich etwas falsch gemacht.
Ich würde HSL nur verwenden, wenn ich Farben animieren müsste, sonst RGB.
Außerdem wird der Farbton in (360) Grad gemessen, oder? Ich dachte, es gäbe eine "deg"-Messung wie "px" und "em".
Warum verwendet H nicht "deg"?
Diesbezüglich gibt es in anderen Teilen von CSS Zeiten, in denen Sie einen Prozentsatz verwenden können (z. B. 1% oder 87%), aber andere Zeiten, in denen Sie eine Dezimalzahl verwenden müssen (z. B. 0,01 oder 0,87).
Warum nicht in beiden Fällen Dezimal- oder Prozentangaben zulassen?
Danke Chris! HSL ist für uns alte Designer viel intuitiver! Perfekt, wenn Sie Farbtöne oder Schattierungen einer Farbe wünschen, ohne die Farbe zu ändern.
Ich habe auch bemerkt, dass Photoshop beim Erfassen von RGB-Werten "ungenau" ist. Farben, die ich mit RGB in CSS erstelle, stimmen nicht mit den Photoshop-Grafiken überein, die mit Hex-Werten erstellt wurden. Mein aktuelles Projekt dreht sich um einen violetten Hex-Wert, der sich verschiebt. Ich weiß es nicht genau, aber ich glaube, es passiert etwas, wenn ich für das Web als PNG-Datei speichere.
.png, das aus einigen Versionen von Photoshop gespeichert und in einigen Versionen einiger Browser auf einigen Betriebssystemen angezeigt wird, erscheint tendenziell heller als das Originalbild.
Siehe: http://morris-photographics.com/photoshop/articles/png-gamma.html
Wenn es sich um eine völlig andere Farbe handelt, müssen Sie Ihren Monitor kalibrieren und dann die Farbmanagement-Einstellungen von Photoshop kalibrieren, um sicherzustellen, dass Photoshop im gleichen Farbraum wie Ihr Monitor arbeitet (oder so ähnlich... ich habe es nie ganz verstanden).
Ihr Demo funktioniert auf dem iPad, bis Sie versuchen, die Schieberegler zu bewegen, und die ganze Seite scrollt stattdessen!
Aber trotzdem eine gute Lektüre!
Vielen Dank für diesen Artikel, Chris! Ich wünschte, HSLA würde mehr Aufmerksamkeit bekommen. Viel intuitiver als RGBA.
Ich stimme der Empfehlung von Rainbow für Firefox zu. Ein paar gute Online-Farbwerkzeuge, die HSLA unterstützen: Doughnut Color Picker und http://serennu.com/colour/hsltorgb.php
Die dritte Vorschau von IE 9 unterstützt jetzt HSLA. Yay!
Mein bevorzugtes Farbwähler-Tool, das HSLa unterstützt, ist Frank DeLoupe für OS X. Die 99 Cent sind es wert.
Sip ist das beste Werkzeug für Farben, das ich bisher für Mac gefunden habe.
http://theolabrothers.com/sip/
Kann mir jemand helfen, das zu beheben.
Ich benutze.
@theme:#5c0632;
Aber die folgende Syntax funktioniert nicht...
@themeColor:hsl(@theme, 99%, 64%);
Eigentlich möchte ich in HSL nur den "H"-Wert zufällig ändern, basierend auf meinem Thema.
Bitte ignorieren.