sass - SCSS - 为什么扩展类会有这样的行为?

标签 sass

我有这个 SCSS 代码:

.a {
    color: red;
}

.b {
    @extend .a;
}

:not(.a) {
    color: green;
}

我期待这个:

:not(.a) {
  color: green; }

但是我得到了这个:

:not(.a):not(.b) {
  color: green; }

是否有任何文档指定该行为,或者这是编译器的错误?

最佳答案

您正在从 .a 扩展 .b,它会获得像 .a、.b 这样的选择器。当您使用像 :not 这样的伪选择器时,它正在使用生成的选择器。

在本例中,请使用带有 % 的占位符选择器。

%redColor{
  color: red;
}
%greenColor{
  color: green;
}

.a {
    @extend %redColor;
    :not(&){
      @extend %greenColor;
    }
}

.b {
    @extend %redColor;
}

输出:

.a, .b {
  color: red;
}

:not(.a) {
  color: green;
}

关于sass - SCSS - 为什么扩展类会有这样的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582644/

相关文章:

css - 当 sibling 第一个 child 徘徊时改变类(class)

javascript - vue.js - 将 sass 样式从一个组件绑定(bind)到另一个组件

ios - @media 查询以排除 SASS 中的 iOS 设备

html - 将伪元素放在父元素后面

css - Flexbox 在 Safari 中不堆叠

javascript - 将暗模式/亮模式保存到本地存储

javascript - Node/npm : File to import not found when compiling scss with node-sass

variables - 将媒体查询保存在变量中

css - 属性值的 SASS 函数/混合

php - 有谁知道如何在 Laravel 4 上安装 SASS?