Strip-unit Funktion

Avatar of Kitty Giraudel
Kitty Giraudel am

Es gibt viel Verwirrung darüber, wie Einheiten in Sass funktionieren. Doch sie funktionieren genau wie im echten Leben. Wenn Sie die Einheit eines Wertes entfernen wollen, müssen Sie ihn durch 1 Einheit teilen. Zum Beispiel, um die cm Einheit von 42cm zu entfernen, müssen Sie sie durch 1cm teilen. In Sass funktioniert es genau gleich.

$length: 42px;
$value: $length / 1px;
// -> 42

Aber was ist, wenn Sie die verwendete Einheit nicht kennen? Nehmen wir an, es könnte alles sein, von Pixeln über em bis hin zu vw und ch. Dann müssen wir die Logik in einer Funktion abstrahieren.

/// Remove the unit of a length
/// @param {Number} $number - Number to remove unit from
/// @return {Number} - Unitless number
@function strip-unit($number) {
  @if type-of($number) == 'number' and not unitless($number) {
    @return $number / ($number * 0 + 1);
  }

  @return $number;
}

Die Berechnung mag seltsam aussehen, aber sie ist tatsächlich sinnvoll. Um 1 der Einheit von $number zu erhalten, können wir $number mit 0 multiplizieren und dann 1 addieren.

Verwendung

$length: 42px;
$value: strip-unit($length);
// -> 42