Css 与Sass函数一起使用时,Sass divide不起作用

Css 与Sass函数一起使用时,Sass divide不起作用,css,sass,Css,Sass,我有一个将px转换为em的函数: @function em($pixels, $context: 16px) { @return #($pixles/$context)em } 我有一个使用此函数的变量: $margin: em(60px); 现在我试着这样使用它: div { margin: 0 -#{$margin / 2}; } div { margin: 0 ($margin / -2); } 但这是无效的css。devtools中的输出为: ma

我有一个将px转换为em的函数:

  @function em($pixels, $context: 16px) {
      @return #($pixles/$context)em
    }
我有一个使用此函数的变量:

$margin: em(60px);
现在我试着这样使用它:

div {
 margin: 0 -#{$margin / 2}; 
}
div {
  margin: 0 ($margin / -2);
}
但这是无效的css。devtools中的输出为:

margin: 0 -3.75em / 2
当我删除该函数并仅使用em值时,它正在工作。
我怎样才能做到这一点呢?

首先,我认为您的函数代码中有一个输入错误,但我忽略了这一点,因为根据您的输出,您的函数运行良好。真正的问题在于函数输出的值类型。由于只是使用插值将
em
连接到计算值,因此输出是字符串而不是数字,因此无法对其执行数学运算

不要连接
em
,而是使用乘以
1em
的乘法来附加单位,现在您的原始代码就可以正常工作了

@function em($pixels, $context: 16px) {
  @return ($pixels/$context) * 1em;
}
哈利说的话, 但当您使用该变量时,请按如下方式尝试:

div {
 margin: 0 -#{$margin / 2}; 
}
div {
  margin: 0 ($margin / -2);
}

不工作…现在输出为:边距:0-3.75*1em/2@Developer123:你确定吗?这是一个在线演示@,它似乎工作得很好。欢迎@Developer123。我正在删除在线样本,以避免我的GIST列表中出现混乱。请不要介意:黛雅,这也是正确的。我只是把它保持原样,因为在它上面没有做任何额外的数学运算,所以连接就可以了。