SASS乘法单位

时间:2016-07-12 09:01:47

标签: sass

如果我尝试将两个值乘以单位,我会收到意外错误。

$test: 10px;

.testing{
  width: $test * $test;
}
result: 100px*px isn't a valid CSS value.

4 个答案:

答案 0 :(得分:16)

SASS中的乘法单位就像物理中的乘法单位一样 / engineering / chemistry / [在这里插入科学]。

(详见https://www.sitepoint.com/understanding-sass-units/

将两个像素值相乘,得到px ^ 2,这是一个区域,而不是距离。

你能做什么?如果你确定要倍增像素,请使用一个函数并除以1像素。

$test: 10px;

@function multiply-px($value1, $value2) {
  @return $value1 * $value2 / 1px;
}

.testing {
  width: multiply-px($test, $test);//100px
}

如果你不知道你将提前使用哪些单位,你可以从$ value2剥离单位,这样你总能获得$ value1的单位。

(详情请见https://css-tricks.com/snippets/sass/strip-unit-function/

$test: 10in;

@function strip-unit($number) {
  @if type-of($number) == 'number' and not unitless($number) {
    @return $number / ($number * 0 + 1);
  }

  @return $number;
}

@function multiply-use-first-unit($value1, $value2) {
  @return $value1 * strip-unit($value2);
}

.testing {
  width: multiply-use-first-unit($test, $test);//100in
}

答案 1 :(得分:12)

我过去曾使用过interpolation,当我想用​​变量做数学时,我觉得这是最简单的解决方案。如果这对您不起作用,可能是因为编译器存在差异?

$test: 10px;

.testing{
  width: #{$test * 2};
}

实际上width: $test * 2;为我编译width: 20px,你甚至不需要使用插值来进行简单的数学运算。我正在使用ember-cli-sass,它使用broccoli-sass-source-maps,它使用包含libsass的node-sass将我的SCSS编译为CSS。但它似乎在使用SCSS和Compass的this jsbin中正常工作。

如果需要使用calc,插值确实有用。

$test: 10px;

.testing{
  width: calc(50% + #{$test * 2});  // results in calc(50% - 20px)
}

答案 2 :(得分:0)

您不能将两个px值相乘。更好的方法是使用它,但你必须使用add来实现它: -

$test: 10px;

@function calc-width($value1, $value2) {
  @return $value1 + $value2;
}

.testing {
  width: calc-width($test, $test);
}

答案 3 :(得分:0)

//try this

$test: 10;

.testing{
  width: $test * $test px;
}