web-dev-qa-db-fra.com

Comment enlevez-vous l'unité de n'importe quel numéro dans SASS?

Je sais que vous pouvez retirer les unités des nombres dans SASS lorsque vous connaissez l'unité au préalable comme ceci:

$number: 16px;
$without-unit: 16px / 1px;
@warn $without-unit; // 16

Mais est-il possible de retirer l'unité d'un numéro sans savoir ce qu'est l'unité en premier?

@function strip-unit($number) {
  // magic code here...
}

@warn strip-unit(16px); // 16
43
jordanbtucker

-

MISE À JOUR: Vous ne devriez jamais avoir réellement besoin d'utiliser cette fonction. Les mathématiques Sass sont très intelligentes au sujet des unités, et je n'ai jamais vu de cas d'utilisation dans lequel le décapage des unités était une meilleure option que d'utiliser simplement les mathématiques correctes pour obtenir ce dont vous avez besoin. Voir le fil de discussion Sass où cela a été longuement discuté.

C'est une fonction intelligente, mais si jamais vous avez envie de l'utiliser, il y a probablement un problème avec vos calculs. Ne vous rabattez pas sur cette fonction. Corrigez vos calculs à la place.

-

Vous devez diviser par 1 de la même unité. Si vous utilisez unit(), vous obtenez une chaîne au lieu d'un nombre, mais si vous multipliez par zéro et ajoutez 1, vous avez ce dont vous avez besoin:

@function strip-units($number) {
  @return $number / ($number * 0 + 1);
}

Ça marche. strip-units(13.48cm) renverra 13.48.

111
Miriam Suzanne

Je pense qu'il faudrait ajouter une fonction Ruby fonction personnalisée pour supprimer les unités (voir la documentation sur ajout de fonctions personnalisées ). Cela ressemblerait à quelque chose comme ça, je penser (avertissement, non testé):

module Sass::Script::Functions
  def strip_units(num)
    assert_type num, :Number
    Sass::Script::Number.new(num.value)
  end
end
0
hopper