拆分SASS参数,如果参数较短,则返回默认值

拆分SASS参数,如果参数较短,则返回默认值,sass,Sass,我有一个sass mixin,它通常接收以下参数: 1 1 33% (周围没有引号) 我可以使用n($values,1)分割这些值;等 但有时调用mixin时,参数中只有一个值 1 然后,nth()将失败:索引超出nth($list,$n) 如果使用单值参数调用mixin,那么返回一些默认值的优雅方式是什么?我想到了 $grow: 1; $shrink: 1; $basis: 0px; @if length($values) >= 1 { $grow: nth($values,

我有一个sass mixin,它通常接收以下参数:

1 1 33%
(周围没有引号) 我可以使用n($values,1)分割这些值;等

但有时调用mixin时,参数中只有一个值

1
然后,nth()将失败:索引超出
nth($list,$n)

如果使用单值参数调用mixin,那么返回一些默认值的优雅方式是什么?

我想到了

$grow: 1;
$shrink: 1;
$basis: 0px;
@if length($values) >= 1 {
    $grow: nth($values, 1);
}
@if length($values) >= 2 {
    $shrink: nth($values, 2);
}

@if length($values) >= 3 {
    $basis: nth($values, 3);
}
但正确设置默认值似乎有点复杂:


但是这已经超出了这个问题的范围,这个问题不是flexbox特有的。

您是否有一个实际的用例来尝试选择这样一个特定的索引?我正要删除这个问题,但它是flex的混合,它可以以各种方式提供。在任何情况下,您都不需要为flex属性选择特定的值索引。。。除非您正在编写一个mixin来提供旧的2009属性。即使这样,您也只需要列表的第一个元素。IE11不支持速记声明中的calc()。因此,我希望mixin生成各个属性。为什么要使用
calc()
?说真的,没有理由将它与flex属性结合使用。在其他时间也很少有合法的需要使用它。