Sass BEM修饰符和子项

Sass BEM修饰符和子项,sass,parent-child,bem,Sass,Parent Child,Bem,我有以下边界元设置: .mytable { font-size: 16px; margin: 30px 0; &--standard { border: 1px solid red; &__row { border: 1px solid blue; } } 我试图做的是将行样式仅应用于修改后的表类 这将产生以下结果 .mytable--standard__

我有以下边界元设置:

  .mytable {
      font-size: 16px;
        margin: 30px 0;
      &--standard {
        border: 1px solid red;
        &__row {
          border: 1px solid blue;
        }
      }
我试图做的是将行样式仅应用于修改后的表类

这将产生以下结果

.mytable--standard__row {
  border: 1px solid blue;
}
这显然不是我想要达到的

有没有一种简洁/标准的方法来解决这个问题?

我们使用:

  .mytable {
      font-size: 16px;
        margin: 30px 0;
      &--standard {
        border: 1px solid red;
      }
      &--standard &__row {
          border: 1px solid blue;
      }
  }
它并不理想(一个
&&
祖父母选择器会很好),但它是我们迄今为止所能想到的最好的选择,我们使用:

  .mytable {
      font-size: 16px;
        margin: 30px 0;
      &--standard {
        border: 1px solid red;
      }
      &--standard &__row {
          border: 1px solid blue;
      }
  }

这并不理想(一个
&&
祖父母选择器会很好),但这是我们迄今为止所能想到的最好的选择

您可以在修饰符后添加另一个符号和以获得所需的输出:

.mytable {
  font-size: 16px;
  margin: 30px 0;

  &--standard {
    border: 1px solid red;
  }

  &--standard & { //<-- 

    &__row{
      border: 1px solid blue;
    }

    &__some-other-element{}

  }

}
.mytable{
字体大小:16px;
利润率:30px0;
&--标准{
边框:1px纯红;
}

&--标准&{/您可以在修饰符后添加另一个与,以获得所需的输出:

.mytable {
  font-size: 16px;
  margin: 30px 0;

  &--standard {
    border: 1px solid red;
  }

  &--standard & { //<-- 

    &__row{
      border: 1px solid blue;
    }

    &__some-other-element{}

  }

}
.mytable{
字体大小:16px;
利润率:30px0;
&--标准{
边框:1px纯红;
}

&--标准&{//您能写出预期的输出以了解您的需求吗目标是什么?您想对表上的行应用样式吗?您的请求不清楚。“这显然是错误的”不,该选择器及其规则是从您提供的sass正确生成的。此外,这是处理BEM*中的修饰符的适当方法。您认为应该生成什么实际选择器?(*边界元法有多种变体,因此可能存在一些不需要选择器的地方,您需要具体说明您使用的变体)。请您写出预期输出,以了解您的需求目标是什么?您希望将样式应用于表中的行吗?您的请求不清楚。“这显然是不正确的”不,该选择器及其规则是从您提供的sass正确生成的。此外,这是处理BEM*中的修饰符的适当方法。您认为应该生成什么实际选择器?(*边界元法有多种变体,因此可能有一些选择器不可取,您需要具体说明您使用的变体)。答案很好,但据我所知,没有那么广为人知或记录在案。答案很好,但据我所知,没有那么广为人知或记录在案。