Bei einer tiefgehenden Beschäftigung mit Farbtheorie gibt es etwas namens relative Farbleuchtdichte. Vereinfacht ausgedrückt definiert die Leuchtdichte einer Farbe ihre Helligkeit. Eine Leuchtdichte von 1 bedeutet, die Farbe ist weiß. Umgekehrt bedeutet ein Leuchtdichtewert von 0, dass die Farbe schwarz ist.
Das Wissen um die Leuchtdichte einer Farbe kann nützlich sein, wenn man mit dynamischen oder zufälligen Farben arbeitet, um eine genaue Hintergrundfarbe bereitzustellen, falls die Farbe zu hell oder zu dunkel ist. Als Faustregel kann man davon ausgehen, dass eine Farbe mit einer Leuchtdichte über 0,7 auf einem weißen Hintergrund schwer zu lesen sein wird.
Code
/// Returns the luminance of `$color` as a float (between 0 and 1)
/// 1 is pure white, 0 is pure black
/// @param {Color} $color - Color
/// @return {Number}
/// @link http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef Reference
@function luminance($color) {
$colors: (
'red': red($color),
'green': green($color),
'blue': blue($color)
);
@each $name, $value in $colors {
$adjusted: 0;
$value: $value / 255;
@if $value < 0.03928 {
$value: $value / 12.92;
} @else {
$value: ($value + .055) / 1.055;
$value: pow($value, 2.4);
}
$colors: map-merge($colors, ($name: $value));
}
@return (map-get($colors, 'red') * .2126) + (map-get($colors, 'green') * .7152) + (map-get($colors, 'blue') * .0722);
}
Verwendung
$color: #BADA55;
$luminance: luminance($color);
// 0.6123778773
Hallo Hugo,
Ich habe versucht, die Leuchtdichte-Funktion zu testen, aber sie funktioniert nicht. Benötigen wir das Sass-Ally-Plugin für die Leuchtdichte-Funktion?
Sind Map-Funktionen standardmäßig in Sass bekannt oder benötigen wir dafür ein installiertes Gem?
Ich habe versucht, die Leuchtdichte-Funktion in Codepan zu testen, aber sie funktioniert nicht.
Ich freue mich wirklich darauf, von Ihnen zu hören.
Prost!
Rozita
Hallo.
Sie benötigen die Funktion
pow: https://css-tricks.de/snippets/sass/power-function/. :)Danke, aber…
Wo wollen Sie die Leuchtdichte-Variable dann verwenden?
Das ist Ihnen überlassen? :)
Ich habe aufgegeben :D
Ich habe beschlossen, die Leuchtdichte von Farben mit JavaScript zu berechnen, da ich Less verwende und die Hilfsfunktionen und die Vielfalt der Funktionen in Less begrenzt sind.
Danke trotzdem :)
Es wird nicht erwähnt, aber der große Vorteil hier ist die Verwendung in HSL https://en.wikipedia.org/wiki/HSL_and_HSV und HSLA https://css-tricks.de/yay-for-hsla/
Das ist das, wofür das L steht: Leuchtdichte :)
Falls sich jemand gefragt hat, wie man das einsetzt. Ich weiß, dass diese Seite viele erfahrene Nutzer hat, aber Neulinge sind damit vielleicht nicht vertraut.
Das L in HSL steht tatsächlich für 'Lightness' (Helligkeit), was nicht dasselbe wie Leuchtdichte ist.
Ich habe dies aktualisiert, um die neue Haltung von Dart Sass bezüglich der Verwendung von
/als Divisionszeichen zu berücksichtigen (siehe Erklärung hier: )Beachten Sie die Verwendung von
1.
@use 'sass:math';zum Aufrufen der entsprechenden Mathematikbibliothek.2.
math.div(zahl1, zahl2)anstelle von(zahl1 / zahl2)Bearbeiten: Erklärung hier
https://sass-lang.de/documentation/breaking-changes/slash-div