less.js守卫和条件

时间:2012-02-29 00:00:48

标签: css conditional less mixins

我有以下较少的mixin:

@myColor = #123456;

.mixin(@a) when (@a = @myColor){ // do something }

然而,这会抛出此错误:无法执行比较

为什么?

3 个答案:

答案 0 :(得分:2)

看起来(从lesscss 1.2.2开始),警卫只支持比较尺寸和关键字。 (搜索“比较:”的来源)所以,遗憾的是,比较两种颜色或字符串是行不通的。

答案 1 :(得分:0)

更新:四个想法(同样,我没有LESS本身的经验,我只是看文档)。

  1. 您传递给mixin(@a)的变量是否为十六进制格式的颜色?也许它无法进行比较,因为您传递的是另一种变量类型。

  2. 为了确定,您是否仔细检查过你是否调用了正确的变量(@myColor)而不是@mycolor)。

  3. 您是否尝试将when转换为(@myColor = @a),看看是否有效。在http://lesscss.org/处的一个示例中,他们使用未在mixin中定义的变量(他们使用@media),这是他们所拥有的顺序。

  4. 最后,我的第一个原始答案是尝试:

    .mixin(@a, @b: @myColor) when (@a = @b){ // do something }

答案 2 :(得分:0)

只需将less.js更新到最后一个版本(1.2.2 - 当前版本)即可。

我遇到了同样的问题。现在它为我修复了(我的问题代码示例:Lesscss Mixins with guards. Syntax Error)。 我认为,这将是固定的,并以你的例子。