Sass 嵌套选择器的注释不';我没有出现在预期的地方

Sass 嵌套选择器的注释不';我没有出现在预期的地方,sass,comments,Sass,Comments,下面是我的SCSS文件及其输出。但是,当您检查编译后的注释时,所有注释都放错了位置 SCSS /* Navigation */ .navigation{ background: red; /*Subnavigation 1*/ .subnav{ background: #FFF; } /*Subnavigation 2*/ .subnav2{ background: black; } } 输出 /* Navigation */ .

下面是我的SCSS文件及其输出。但是,当您检查编译后的注释时,所有注释都放错了位置

SCSS

/* Navigation */
.navigation{
   background: red;
   /*Subnavigation 1*/
  .subnav{
     background: #FFF;
   }
   /*Subnavigation 2*/
   .subnav2{
      background: black;
   }
 }
输出

/* Navigation */
.navigation {
  background: red;
  /*Subnavigation 1*/
  /*Subnavigation 2*/
}

.navigation .subnav {
  background: #FFF;
}

.navigation .subnav2 {
   background: black;
}
/* Navigation */
.navigation {
  background: red;
}
/*Subnavigation 1*/
.navigation .subnav {
  background: #FFF;
}
/*Subnavigation 2*/
.navigation .subnav2 {
   background: black;
}
所需输出

/* Navigation */
.navigation {
  background: red;
  /*Subnavigation 1*/
  /*Subnavigation 2*/
}

.navigation .subnav {
  background: #FFF;
}

.navigation .subnav2 {
   background: black;
}
/* Navigation */
.navigation {
  background: red;
}
/*Subnavigation 1*/
.navigation .subnav {
  background: #FFF;
}
/*Subnavigation 2*/
.navigation .subnav2 {
   background: black;
}
这是SCSS的错误还是问题?。我使用的是指南针0.12.2(Alnilam)

建议:

更改您的评论标准。而不是

/* Navigation */
.navigation{
   background: red;
   /*Subnavigation 1*/
  .subnav{
     background: #FFF;
   }
   /*Subnavigation 2*/
   .subnav2{
      background: black;
   }
 }
将注释放在块的开口内:

.test {/*nav*/
    background: red;

    .test2{ /*subnavigation 1*/
    background:#fff;
    }

    .test3 {/*subnavigation 2*/
        background:#fff;
     }
 }
您将获得以下输出:

/* line 27, ../scss/main.scss */
.test {
  /*nav*/
  background: red;
}
/* line 30, ../scss/main.scss */
.test .test2 {
  /*subnavigation 1*/
  background: #fff;
}
 /* line 34, ../scss/main.scss */
 .test .test3 {
 /*subnavigation 2*/
     background: #fff;
}

这能满足您的需要吗?

Compass编译时,您可以使用响亮的注释将注释保留在您放置的位置:

/*! This comment isn't going anywhere. */
您需要在不使用嵌套语法的情况下执行或编写它们

考虑

/* Navigation */
.navigation{
   background: red;
   /* TODO add a background image */
  .subnav{
     background: #FFF;
   }
}
那样的话,你可能不想

/* TODO pick a better red */
.subnav{
    background: #FFF;
}

注释与
.navigation
类的属性处于相同的嵌套级别,因此它们被视为属于该类而不是其子类。是的,但是否仍有纠正方法?我们无法避免在内部嵌套subnav。导航。上面的代码是我们拥有的复杂嵌套样式的简单表示。目前正在基于主题的网站上工作,需要这种嵌套。您唯一的选择是不嵌套。所有生产CSS都应缩小,并删除注释。如果它在您实际编辑的SCS中的外观符合您的要求,那么它在输出的CSS中的外观又有什么关系呢?在生产中,我们将删除注释并缩小CSS。但我们有一个中间阶段,所有代码QA和css选择器测试都由第三方执行。给他们一些提示很重要。谢谢,但这行不通。现在,评论与它下面的财产有关。例如:/*nav*/->背景:红色。那是不对的。另外,如果您注意到.test{/*nav*/在代码中只有一行,但在输出时会推到下一行。我的问题和注释没有正确对齐(上面的问题)都在scss github问题列表中。(1)(2)这将阻止缩微器删除注释。