LESS 选择器:如何仅对 mixin 内部的元素之一应用样式?

LESS selectors: how to apply styling only for one of the elements from inside mixin?

我有一个无法更改的代码:

item.left,
item.centre,
item.right{
.MIXIN();
}

.MIXIN(){
width: 100px;
}

我只需要将宽度应用于 .right 元素。我只能更改 MIXIN() 的内容。我正在考虑使用 &,但它会导致 .right item.rightitem.right .right,这不是我想要的。有没有办法使用 MIXIN() 的内容为 .right 元素应用样式?

你做不到。唯一的方法是覆盖第一个声明。

   item.left,
   item.centre {
       width: inherit;
   }

如果没有 space,& 怎么样:

.MIXIN() {
    width: 100px;
    &.right { color: red; }
}

它编译成 item.right.right 这有点奇怪,但不会匹配左和中。

Fiddle: http://jsfiddle.net/c0634wg2/

可以使用否定CSS伪class:not().

item.left,
item.centre,
item.right{
  width: 20px; 

  &:not(.left):not(.centre) {
    width: 100px;
  }
}

Fiddle: https://jsfiddle.net/e0nd7pk4