如何从SASS中的任何数字中剥离单位?

问题描述 投票:43回答:3

我知道您可以像这样预先了解单位时从SASS中的数字中剥离单位:

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

但是有可能在不知道单元是第一个单元的情况下从数字中剥离单元吗?

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

@warn strip-unit(16px); // 16
function sass units-of-measurement
3个回答
111
投票

-

UPDATE:您实际上应该永远不需要使用此功能。 Sass数学关于单位非常聪明,我从未见过用例比简单地使用正确的数学来获得所需内容更好的选择。请参阅Sass issue thread,对此进行了详细讨论。

这是一个聪明的函数,但是如果您想使用它,则可能是数学问题。不要退回到这个功能上。修正数学。

-

您需要用相同单位除以1。如果使用unit(),则会得到字符串而不是数字,但是如果乘以零并加1,则具有所需的条件:

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

行得通。 strip-units(13.48cm)将返回13.48


0
投票

我认为您必须添加一个自定义Ruby函数来剥离单位(请参见adding custom functions上的文档)。我认为它看起来像这样(警告,未经测试):

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

0
投票
@function strip-unit($number) {
@return $number / ($number * 0 + 1);

}

© www.soinside.com 2019 - 2024. All rights reserved.