Sass 子代选择器(>;)与根选择器(&;)组合导致错误编译

Sass 子代选择器(>;)与根选择器(&;)组合导致错误编译,sass,Sass,这个问题很容易解释 这是输入: .a { position: relative; overflow: hidden; width: 960px; background: #a3c1ef; height: 100%; margin: 0 auto; > &-b { list-style: none; > &-c { display: inline-block

这个问题很容易解释

这是输入:

.a {
    position: relative;
    overflow: hidden;
    width: 960px;
    background: #a3c1ef;
    height: 100%;
    margin: 0 auto;

    > &-b {
        list-style: none;
        > &-c {
            display: inline-block;
            color: blue;
            font-size: 100px;
        }
    }
}
这是预期输出:

.a {
  position: relative;
  overflow: hidden;
  width: 960px;
  background: #a3c1ef;
  height: 100%;
  margin: 0 auto;
}
.a > a-b {
  list-style: none;
}
.a > a-b > a-b-c {
  display: inline-block;
  color: blue;
  font-size: 100px;
}
这是我得到的实际输出:

.a {
  position: relative;
  overflow: hidden;
  width: 960px;
  background: #a3c1ef;
  height: 100%;
  margin: 0 auto;
}
> .a-b {
  list-style: none;
}
> > .a-b-c {
  display: inline-block;
  color: blue;
  font-size: 100px;
}
当我移除根选择器
&
时,输出与预期一样:
a>b>c
。但是,当我将根选择器
&
与直系后代选择器
结合使用时,输出如上所示。这种行为是如此违反直觉。 有人能解释一下如何修复它(如果可能的话)


SASS编译器版本:1.12.0

您必须首先复制>前面的父选择器,然后深入查看它。但是,第三个子级将作为.a>.a-b>.a>.a-b-c{}输出,因此更容易跳出一个级别,然后像我的示例中那样重新开始

我以你的例子为基础,应该可以做到这一点。希望有帮助


您必须先复制>前面的父选择器,然后深入查看它。但是,第三个子级将作为.a>.a-b>.a>.a-b-c{}输出,因此更容易跳出一个级别,然后像我的示例中那样重新开始

我以你的例子为基础,应该可以做到这一点。希望有帮助


谢谢。我只是想偷懒。当我使用SMACS的命名约定时,选择器可能会变得很长。我也误解了符号的作用。谢谢。我只是想偷懒。当我使用SMACS的命名约定时,选择器可能会变得很长。我还误解了符号的作用。