如何用函数中的SCSS变量计算

Sup*_*rDJ 11 sass

我有一个将px转换为rem的函数.例如:

height: rem-calc(14px); // makes height: 1rem;
Run Code Online (Sandbox Code Playgroud)

现在我想用变量来计算它.例如:

$switch-track-width: rem-calc(50px);
$switch-thumb-size: $switch-track-width / 2; // making it 25px or 1.7857rem in this case
Run Code Online (Sandbox Code Playgroud)

这不起作用所以我尝试了别的东西:

$switch-thumb-size: ($switch-track-width / 2) + 0rem;
$switch-thumb-size: (#{$switch-track-width} / 2) + 0rem;
Run Code Online (Sandbox Code Playgroud)

这两个$switch-thumb-size例子都不起作用.现在这是分裂,但我也无法得到times (*),plus (+)并且minus (-)工作.

用2个变量计算时我也遇到了问题.例如:

$switch-track-height: rem-calc(14px);
$switch-track-width: rem-calc(50px);
$switch-thumb-right: $switch-track-height - $switch-track-width;
Run Code Online (Sandbox Code Playgroud)

我prever保持功能属性的变量内,而不是像:height: rem-calc($switch-track-height);.

如果有人可以告诉我如何用两个例子中的SCSS变量进行计算,这将非常有帮助.

提前致谢

Sup*_*rDJ 17

我设法找到一些有用的东西.例如:

$switch-thumb-size: rem-calc(10px);
$switch-track-height: rem-calc(20px);
$something: calc( ( #{$switch-thumb-size} - #{$switch-track-height} ) / 2 );
Run Code Online (Sandbox Code Playgroud)

这导致:

calc( ( 0.71428rem - 1.4285rem ) / 2 )
Run Code Online (Sandbox Code Playgroud)

但它有问题.首先,如果您知道您计算的内容应该始终为负数,那么您-在变量前面添加一个符号就不会起作用.例:

height: - $something; // Doesn't work
Run Code Online (Sandbox Code Playgroud)

我对这种方法的第二个问题是它创建了许多冗余字符.

因为它实际上是:height: calc( ( 0.71428rem - 1.4285rem ) / 2 )在你的css而不是:height: -0.35684rem


del*_*lta 8

实际上可以输入一个编译为数字的公式:(第一个示例取自https://sass-lang.com/guide

article[role="main"] {
  float: left;
  width: 600px / 960px * 100%;
}
div {
  width: $icon_width + 10px * 2;
}
Run Code Online (Sandbox Code Playgroud)

编译为

article[role="main"] {
  float: left;
  width: 62.5%;
}
div {
  width: 60px;
}
Run Code Online (Sandbox Code Playgroud)

这仅适用于兼容的单位。否则去像

height: calc( 100vh - #{$head_height} - #{$main_height});
Run Code Online (Sandbox Code Playgroud)