从选择中使用 LESS 链接父选择器?

Chain parent selectors with LESS from within selection?

我有多个正文 classes 并且我在这些页面中隐藏了一个元素。当使用 javascript 将 class 添加到页面时,我想显示此元素(假设正文具有这些正文 classes)。

这工作正常,但我可以重写它以避免重复吗?

.body-class-a,
.body-class-b,
.body-class-c {
  .element {
    display: none;
  }
}

.body-class-a.js-class,
.body-class-b.js-class,
.body-class-c.js-class {
  .element {
    display: block;
  }
}

通常我会做这样的事情。但是它不起作用,因为 .infscrl-all-shown 不高于 .body-class-a,它处于同一水平。

.body-class-a,
.body-class-b,
.body-class-c {
  .element {
    display: none;
    .infscrl-all-shown & {
      display: block;
    }
  }
}

看起来您只需要删除 .infscrl-all-shown &.

之间的 space

在这样做时,您不再是 select 后代(因为 space 在 class selector 和父 select 或 &)。 select 或 .infscrl-all-shown& 将 select .body-* class 而不是 class .infscrl-all-shown.

.body-class-a,
.body-class-b,
.body-class-c {
  .element {
    display: none;
    .infscrl-all-shown& {
      display: block;
    }
  }
}

它将输出以下内容:

.body-class-a .element,
.body-class-b .element,
.body-class-c .element {
  display: none;
}
.infscrl-all-shown.body-class-a .element,
.infscrl-all-shown.body-class-b .element,
.infscrl-all-shown.body-class-c .element {
  display: block;
}