SCSS mixin 跳过默认参数
SCSS mixin skip default arguments
我有一些混合:
@mixin flexBox( $directionVlaue: row, $justifyValue: flex-start, $alignValue: baseline ) {
display: flex;
flex-direction: $directionVlaue;
justify-content: $justifyValue;
align-items: $alignValue;
}
现在,如果我使用它并传入参数,是否有可能跳过一个,这样我就不必一直写所有三个参数:
.thing {
@include flexBox(row, center, center);
}
我不想在这里指定 row
因为它是默认值。那么是否可以这样写:
.thing {
@include flexBox( , center, center); // leave first argument empty
}
你不能那样做,但是你可以使用 null
值,使用 null
,我们可以传递一个没有值的变量,它会被排除在 CSS 之外输出,除非我们在包含 mixin
.
时为其赋值
所以在你的情况下:mixin
@mixin flexBox( $directionVlaue: null, $justifyValue: flex-start, $alignValue: baseline )
@include
.thing {
@include flexBox(center, center);
}
null 值在这种情况下有效,因为我们仍然可以定义可选参数而无需不必要的 CSS 输出。所以现在,如果我们传递两个值,它只会将这些声明输出到 CSS.
所以只要你不定义任何值,它就会是null
也许是关键字参数?这允许定义特定参数。
https://sass-lang.com/documentation/at-rules/mixin#taking-arbitrary-keyword-arguments
我有一些混合:
@mixin flexBox( $directionVlaue: row, $justifyValue: flex-start, $alignValue: baseline ) {
display: flex;
flex-direction: $directionVlaue;
justify-content: $justifyValue;
align-items: $alignValue;
}
现在,如果我使用它并传入参数,是否有可能跳过一个,这样我就不必一直写所有三个参数:
.thing {
@include flexBox(row, center, center);
}
我不想在这里指定 row
因为它是默认值。那么是否可以这样写:
.thing {
@include flexBox( , center, center); // leave first argument empty
}
你不能那样做,但是你可以使用 null
值,使用 null
,我们可以传递一个没有值的变量,它会被排除在 CSS 之外输出,除非我们在包含 mixin
.
所以在你的情况下:mixin
@mixin flexBox( $directionVlaue: null, $justifyValue: flex-start, $alignValue: baseline )
@include
.thing {
@include flexBox(center, center);
}
null 值在这种情况下有效,因为我们仍然可以定义可选参数而无需不必要的 CSS 输出。所以现在,如果我们传递两个值,它只会将这些声明输出到 CSS.
所以只要你不定义任何值,它就会是null
也许是关键字参数?这允许定义特定参数。
https://sass-lang.com/documentation/at-rules/mixin#taking-arbitrary-keyword-arguments