less mixin名称被评估为颜色/颜色

时间:2014-09-04 09:18:40

标签: css less

我有一个较少的文件来定义一堆颜色/颜色。每个班级名称都包含相关颜色的名称,例如.colourOrange{..}.colourBorderOrange{..}navLeftButtOrange{..}

为了简单起见,我有一个使用参数名称:color的mixin,并使用它来命名类:

.completeColour(@colourName, @col) {
.colour@{colourName}{
    …
}
.colourBorder@{colourName}{
   …
}
.leftNavButt@{colourName}{

... ..     } }

问题是正在将类的名称评估为相关颜色。因此,我没有获得.leftNavButtOrange{},而是在生成的CSS中获得.leftNavButt#ffa500{}

有没有办法用编译器参数或其他东西来阻止它。基本上我不希望评估,读取但不评估参数。我可以使用编译器参数执行此操作,还是需要更改名称以使它们与myAppOrange等颜色不匹配。

1 个答案:

答案 0 :(得分:2)

这是Less的遗留功能。目前,可以使用以下解决方案之一来克服此颜色名称到十六进制代码转换。

.completeColour(~"Orange",1);

.completeColour(e("Orange"),1);

两个选项都明确告诉编译器传递的值是String而不是Color,因此Less编译器不会将其转换为相应的十六进制代码。

<强>来源:

  1. Less GitHub - how to avoid color name be translated into color value?
  2. Less GitHub - Compilation of named colors results in hex values being used incorrectly in interpolations
  3. 更新:从版本2.0.0开始,如果将颜色明确提及为名称并且没有其他基于颜色的操作,则不会发生此颜色名称到十六进制代码转换。版本2.0.0目前处于测试模式。

    官方更新: V2 Upgrade Guide | 原始来源: More consistent named color variables)。