管道两个SCSS函数时,用于乘法的操作数无效

时间:2015-11-20 20:09:28

标签: html css sass compass-sass

我正在研究SASS单位转换功能,我已经定义了两个函数:

convert-units(...);
strip-units(...);

两者分别完美无缺,直到我相互管道,如下:

strip-units( convert-units(...) );

结果是以下错误:

invalid operands for multiplication on line 68 at column 23

我尝试将convert-units()的结果手动复制到strip-units()中,并且它可以正常工作。

以下是工作示例: http://sassmeister.com/gist/b5c61fc7baec1e3bec1f 请滚动到底部,直到找到评论为pipe: strip-units(...的片段。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是因为行$pxValue / $size + $outputUnit实际上不会创建带有单位的数字,而是一个看起来完全相同的字符串。没有简单的方法可以将单位添加到sass中的数字中,但我找到了答案in this question(还有一些关于为什么没有简单方法的背景知识):

@function length($number, $unit) {
  $strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax';
  $units:   1px  1cm  1mm  1%  1ch  1pica  1in  1em  1rem  1pt  1pc  1ex  1vw  1vh  1vmin  1vmax;
  $index: index($strings, $unit);

  @if not $index {
    @warn "Unknown unit `#{$unit}`.";
    @return false;
  }

  @return $number * nth($units, $index);
}

然后只需执行$outputValue: length($pxValue / $size, $outputUnit);即可。

请参阅my gist(我没有让SassMeister保存我的更新代码,不知道为什么)