如何在 SCSS 中使用带有字符串值的 math.sqrt

How to use math.sqrt in SCSS with string value

提问人:KAVA 提问时间:7/25/2022 更新时间:7/21/2023 访问量:785

问:

我使用 SCSS 并有 2 个功能:

@function get-size-in-units($size, $unit: px) {
  @return #{$size}#{$unit};
}

@function get-container-size($side) {
   @return math.ceil(math.sqrt(2 * math.pow($side, 2)));
 }

现在我这样使用它:

get-size-in-units(get-container-size(40));

现在我需要该函数使用字符串值。我的意思是我想用 等来称呼它,而不是用get-container-size'40px''40rem'40

我该怎么做?

sass 指南针-sass scss-mixins

评论


答:

4赞 Kunal Tanwar 7/27/2022 #1

首先,您需要从中剥离,创建一个 .units$side@function

@use 'sass:math';

@function stripUnit($number) {
    @return math.div($number, ($number * 0 + 1));
}

功劳归于Kitty GiraudelMiriam SuzannestripUnit

现在使用 返回的value@function

@function get-container-size($side) {
    @return math.ceil(math.sqrt(2 * math.pow(stripUnit($side), 2)));
}

完整代码

@use 'sass:math';

@function stripUnit($number) {
    @return math.div($number, ($number * 0 + 1));
}

@function get-container-size($side) {
    @return math.ceil(math.sqrt(2 * math.pow(stripUnit($side), 2)));
}

@function get-size-in-units($size, $unit: px) {
    @return #{$size}#{$unit};
}

然后你可以像这样使用它:

.container {
    width: get-size-in-units(get-container-size(40px));
}