你如何从SASS的任何号码剥离单位?

我知道你可以在SASS中脱离数字单位,当你知道这个单位像这样:

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

但是,是否有可能从一个数字中剥离单位,而不知道单位是什么?

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

更新:你永远不应该实际上需要使用这个function。 萨斯math对于单位来说是非常聪明的,而且我从来没有见过一个用单位剥离单位比单纯使用正确的math来获得所需要的更好的select。 请参阅Sass问题线索 ,详细讨论了这一点。

这是一个聪明的function,但是如果你觉得使用它,那么你的math可能有一个问题。 不要回头看这个function。 修正你的math。

你需要除以1的单位。 如果你使用unit() ,你会得到一个string,而不是一个数字,但是如果你乘以零并加1,你有你所需要的:

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

这样可行。 strip-units(13.48cm) 13.48 strip-units(13.48cm)将返回13.48

我想你必须添加一个自定义的Ruby函数来剥离单元(请参阅添加自定义函数的文档)。 它看起来像这样,我认为(警告,未经testing):

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