Sass SCSS:使用函数中的单位值进行计算

Sass SCSS:使用函数中的单位值进行计算,sass,Sass,我通过地图为主题定义值,如下所示: $sizes: ( small: 768, medium: 1024, large: 1200, xlarge: 1600, gutter: 48 ); 然后给他们一个具有以下功能的装置: @function sz($size) { @return map-get($sizes, $size) + px; } 如何通过使用函数中的一个值进行计算来定义变量,例如 $gutterhalf: (sz(gutter)

我通过地图为主题定义值,如下所示:

$sizes: (
    small: 768,
    medium: 1024,
    large: 1200,
    xlarge: 1600,
    gutter: 48
);
然后给他们一个具有以下功能的装置:

@function sz($size) {
    @return map-get($sizes, $size) + px;
}
如何通过使用函数中的一个值进行计算来定义变量,例如

$gutterhalf: (sz(gutter) / 2);
那么这个变量将返回48px/2=24px?我知道我可以使用无单位值,然后添加单位,就像这样:

$gutterhalf: (map-get($sizes, gutter) / 2) + px;
有没有办法用函数的值来处理它呢?

通常我会用它来做现场的sass演示,但如果没有它自动切换到dart sass,我似乎无法共享我的sass演示。很奇怪

但我已经将结果输出到id为的divs上的before伪内容样式

看小提琴实验的想法

下面是scss代码

//数组没有像素单位,只有整数
$sizes_0:(
sm:768,
md:1024,
lg:1200,
xl:1600,
排水沟:48
);
//下面的两个函数都使用上面的数组
//此功能允许您传递潜水数据
@函数sz_0($size,$divide:1){
@返回map get($size\u 0,$size)/$divide+px;
}
//这输出24px
$gutterhalf_0:sz_0(排水沟,2);
//此函数仅返回数组值
@函数sz_2($size){
@返回map get($size\u 0,$size);
}
//这输出24px
$gutterhalf_2:(sz_2(排水沟)/2)+px;
//像素单元阵列
$sizes_1:(
sm:768px,
md:1024px,
lg:1200px,
xl:1600px,
排水沟:48px
);
//此函数只返回带有单位的数组值
@函数sz_1($size){
@返回map get($size\u 1,$size);
}
//这输出24px
$gutterhalf_1:sz_1(排水沟)/2;
//sass的结果是内容
#sz_0::之前{
内容:“#{$gutterhalf_0}”;
}
#司徒一:以前{
内容:“#{$gutterhalf_1}”;
}
#司徒二:以前{
内容:“#{$gutterhalf_2}”;
}

谢谢。我一定是做错了什么。如果我完全按照上面所描述的那样做,首先是映射,然后是函数,然后我定义
$gutter\u half:sz(gutter)/2,当我使用变量$gottle_half时,输出值是'48px/2',而不是'24px'。我看到你在使用另一个$divide变量-使用单位值直接除法不起作用?我将在SCSS中添加一些注释以更好地解释。看到-它的输出与我最初的示例相同。我只是想知道我是否可以使用一个带有单位的值,从一个映射中,并用SCS进行除法,而不需要额外的变量/除法器标记-它似乎不这样工作?再次感谢您的评论!从您所写的内容来看,我似乎需要使用除法器,以便从映射中的单位值到我想要的最终值(在本例中,除以2=24px,如$gutterhalf_0所示)。我可以使用除法器,也可以只使用普通数值对一个值进行除法,因为它是一个带px的字符串。要将像素单位值一分为二,必须有一定的距离。