使用 mixin 参数在 LESS 中创建 class 名称

Use mixin argument to create class name in LESS

我正在尝试在 LESS 中为我​​将用于网站的不同颜色创建一个简单的混合。

我想要的是使用 mixin argument 作为 class 名称的一部分。

@green: #5FBEAA; // my color variable

.text-color(@color) {
    .text-{@color} {
        color: @color;
    }
}

.text-color(@green);

我得到的输出是:

.text-#5FBEAA {
  color:#5FBEAA
}

我想要的是:

.text-green {
  color:#5FBEAA
}

我认为这不可能。最接近的解决方案是使用一个附加变量。

@green: #5FBEAA;
 .text-color(@name,@color) {
     .text-@{name} {
         color: @color;
     }
 }
 .text-color(green,@green);

这将编译为

.text-green {
  color: #5FBEAA;
}

我想我有使用 Variable Names 的解决方案。

@green: #5FBEAA;

.text-color(@colorname) {
  @color: ~"@{colorname}";
  .text-@{color}{
    color: @@color;
  }
}

.text-color(green);

输出

.text-green {
  color: #5FBEAA;
}