在Sass中,您如何引用父选择器并排除任何祖父母?

Cat*_*ton 6 sass

我有以下sass代码:

.class{
    label{
        color:#fff;
        .disabled &{color:#333; }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个输出

.disabled .class label
Run Code Online (Sandbox Code Playgroud)

有没有办法输出父选择器而不包含任何祖父母选择器?像这样:

.disabled label
Run Code Online (Sandbox Code Playgroud)

Kis*_*iss 6

尽管 hopper 并没有完全错误,但实际上您可以使用变量来选择祖父母。

您可以通过以下方式实现您想要的:

.class{
    label{
        color:#fff;

        $selector: nth(&,1);
        $direct-parent: nth($selector, length($selector));

        @at-root #{$direct-parent} {
          .disabled &{color:#333; }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

这将生成这个 css:

.class label {
  color: #fff;
}
.disabled label {
  color: #333;
}
Run Code Online (Sandbox Code Playgroud)


hop*_*per 5

在使用父引用时,我无法在SASS中选择祖先选择器.但是,使用您的代码,稍微重组可以获得相同的结果:

label {
    .class & {
        color: #fff;
    }

    .disabled & {
        color:#333;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译为:

.class label {
  color: #fff; }
.disabled label {
  color: #333; }
Run Code Online (Sandbox Code Playgroud)