你如何从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