Sass 如何在保留原始输出的同时重新定义现有的mixin?

Sass 如何在保留原始输出的同时重新定义现有的mixin?,sass,mixins,Sass,Mixins,让我们假设我有以下混音: @mixin foo { color: red; } 这个mixin是在库中导入的,所以我不想接触源代码。不过,我确实希望扩展mixin的功能,并向其中添加我自己的样式 因此,我需要一种方法来创建具有相同名称的新mixin,同时保留原始输出,但允许我添加新输出,例如: @mixin foo { color: blue; } @mixin foo { @include foo; // this is the original font-

让我们假设我有以下混音:

@mixin foo {
    color: red;
}
这个mixin是在库中导入的,所以我不想接触源代码。不过,我确实希望扩展mixin的功能,并向其中添加我自己的样式

因此,我需要一种方法来创建具有相同名称的新mixin,同时保留原始输出,但允许我添加新输出,例如:

@mixin foo {
    color: blue;
}

@mixin foo {
    @include foo; // this is the original
    font-size: 14px;
}

当然,以上这些都不能满足我的要求,但我能做些什么吗?

我一直在玩,想出了一个似乎有效的办法:

@mixin foo() {
    color: red;
}

%foo {
    @include foo;
}

@mixin foo() {
    @extend %foo;
    font-size: 22px;
}

.foo {
    @include foo;
}

您可以使用
@content扩展/更改Mixin的代码块中有行

@mixin foo(){
  background:green;
  border:solid 5px black;
  @content;
}
div{
  width:200px;
  height:100px;
  &.one{
    +foo(){
      border:0;
    }
  }
}

非常聪明的解决方案。一般来说,我建议创建一个新的mixin,但我也可以考虑一些需要覆盖的情况(使用良好的文档以避免混淆未来的开发人员)。