将值附加到sass mixin中的属性

将值附加到sass mixin中的属性,sass,Sass,我有以下sass混音: @mixin absoluteCenterVertical { position: absolute; top:50%; transform: translateY(-50%); } 我希望能够将额外的变换属性传递给我的mixin,以便像这样使用它 .element { @include absoluteCenterVertical(rotate(45deg)) } 它将编译成 .element { position: absolute; to

我有以下sass混音:

@mixin absoluteCenterVertical {
  position: absolute;
  top:50%;
  transform: translateY(-50%);
}
我希望能够将额外的变换属性传递给我的mixin,以便像这样使用它

.element {
  @include absoluteCenterVertical(rotate(45deg))
}
它将编译成

.element {
  position: absolute;
  top:50%;
  transform: translateY(-50%) rotate(45deg);
}
如何实现这一点?

您可以将与mixin一起使用

@mixin absoluteCenterVertical($extraTransformVals:) {
  transform: translateY(-50%) $extraTransformVals;
}
但是,以上要求始终使用
@include absoluteCenterVertical(旋转(90))传递参数或任何您可能传递的内容。如果不传递参数,sass将在编译过程中给出错误

如果希望有一个,这样mixin就可以工作,而不需要传递像
@include absoluteCenterVertical这样的参数
,必须使用语法
@mixin mixinName($argName:$defaultArgValue)

这里有一种方法可以做到:

@mixin absoluteCenterVertical($extraTransformVals: noExtraValues) {
  @if $extraTransformVals == noExtraValues {
    transform: translateY(-50%);
  } @else {
    transform: translateY(-50%) $extraTransformVals;
  }
}