SASS-Mixin重写&;(安培)

SASS-Mixin重写&;(安培),sass,compass-sass,compass,Sass,Compass Sass,Compass,我正在尝试编写一个mixin,它将修改输出上的父选择器。其思想是,在调用mixin的情况下,父选择器需要对其进行字符串替换。我的大部分工作正常,但我不知道如何吞下& .test { @include alt_parent() { content: 'test'; } } mixin是这样的: @mixin alt_parent() { #{str-replace(unquote("#{selector_append(&)}"), "s", "x")} { @

我正在尝试编写一个mixin,它将修改输出上的父选择器。其思想是,在调用mixin的情况下,父选择器需要对其进行字符串替换。我的大部分工作正常,但我不知道如何吞下
&

.test {
  @include alt_parent() {
    content: 'test';
  }
}
mixin是这样的:

@mixin alt_parent() {
  #{str-replace(unquote("#{selector_append(&)}"), "s", "x")} {
    @content;
  }
}
我有字符串替换工作,所以这不是问题。我得到的是(我理解原因):

我想要的是:

.text {
  content: 'test';
}

您必须使用根目录下的
@at
指令来阻止自动包含由
&
表示的选择器

.test {
  @include alt_parent() {
    content: 'test';
  }
}

@mixin alt_parent($parent) {
    @at-root {
        #{str-replace(unquote("#{selector_append(&)}"), "s", "x")} {
            @content;
        }
    }
}