代码之家  ›  专栏  ›  技术社区  ›  Boris Grunwald

将值附加到sass mixin中的属性

  •  0
  • Boris Grunwald  · 技术社区  · 4 年前

    我有以下sass mixin:

    @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);
    }
    

    0 回复  |  直到 4 年前
        1
  •  2
  •   miir    4 年前

    你可以用 arguments

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

    但是,以上要求始终传递参数 @include absoluteCenterVertical(rotate(90));

    如果你想 optional argument 这样mixin就可以在不传递参数的情况下工作 @include absoluteCenterVertical; ,必须使用语法提供默认值 @mixin mixinName($argName: $defaultArgValue)

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