Less 当身体类别存在时,改变较少的混合?

Less 当身体类别存在时,改变较少的混合?,less,less-mixins,Less,Less Mixins,我有一个较少的混音。当某个实体类出现时,我想改变mixin的一个值 .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:

我有一个较少的混音。当某个实体类出现时,我想改变mixin的一个值

.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;
}

有没有更聪明的方法来写我的选择器列表,这样我就不必重复它们两次?理想情况下,我只编写一次,如果存在.body类,那么对于所有这些代码,我的-style-changed()也将被应用

方法1:(对基本版本和body类特定版本使用不同的混合)

是的,您可以通过将选择器的
.body class*
变体嵌套在泛型选择器中并附加父选择器(如下面的代码段所示),避免多次写入所有选择器。编译此代码时,Less编译器将自动用每个父选择器替换
&

.my-style(){
字体大小:粗体;
颜色:红色;
}
.my-style-changed(){
颜色:蓝色;
}
.element、.element-2、.element-3{
.我的风格;
.身体级别&{
.我的风格改变了;
}
}
编译的CSS:

.element、.element-2、.element-3{
字体大小:粗体;
颜色:红色;
}
.主体类.元素,
.车身等级。元素-2,
.车身等级。元素-3{
颜色:蓝色;
}

方法2:(对基本版本和body类特定版本使用相同的mixin)

或者,如果您希望避免使用两个不同的mixin,并通过相同的mixin输出内容(默认内容和
.body class*
变量),可以按如下方式执行:

.mixin(){
字体大小:粗体;
颜色:红色;
.身体级别&{
颜色:蓝色;
}
}
.element、.element-2{
.mixin()
}