改变LESS密新时身体阶级存在?(Alter LESS Mixin when body class

2019-10-21 23:02发布

我有一个LESS混入。 当某个体类是本欲改变混入的一个值。

.my-style() {
  font-weight: bold;
  color: red;
}

.my-style-altered() {
  color: blue;
}

.element {
  .my-style;
}

.body-class .element {
  .my-style-altered;
}

这是工作的罚款。 但是我选择的名单越来越长:

.my-style() {
  font-weight: bold;
  color: red;
}

.my-style-altered() {
  color: blue;
}

.element,
.element-2,
.element-3 {
  .my-style;
}

.body-class .element, 
.body-class .element-2,
.body-class .element-3 {
  .my-style-altered;
}

有没有写我的选择的列表,所以我不必赘述两次的更聪明的方式? 理想我想他们写一次,并为所有的人我的风格改变的()亦将如果。体类是目前应用。

Answer 1:

方法1:(使用不同的混入用于基本版本和主体级特定版本)

是的,你能避免通过嵌套多次写所有的选择.body-class *通用的一个内选择的变型和附加父选择像下面的代码片段。 当该代码被编译,较少编译器会自动替换&与父选择器中的每一个。

.my-style() {
  font-weight: bold;
  color: red;
}

.my-style-altered() {
  color: blue;
}

.element, .element-2, .element-3 {
  .my-style;
  .body-class &{
      .my-style-altered;
  }
}

编译CSS:

.element, .element-2, .element-3 {
  font-weight: bold;
  color: red;
}
.body-class .element,
.body-class .element-2,
.body-class .element-3 {
  color: blue;
}

方法2:(使用相同混入用于基本版本和主体级特定版本)

或者,如果你想避免使用两个不同的混入和同时输出的内容(默认的和.body-class *通过相同的混入变体),这是可以做到象下面这样:

.mixin() {
  font-weight: bold;
  color: red;
    .body-class &{
        color: blue;
    }
}

.element, .element-2 {
  .mixin()
}


文章来源: Alter LESS Mixin when body class is present?