为什么我的LESS变量必须相同

时间:2012-12-14 22:58:03

标签: less

我有一个变量,我将通过此循环传递给less,用于动态命名该类。没关系,这有可能产生大量的类,我想知道为什么如果我将“红色”变量更改为函数调用中的任何其他内容或其他任何地方,基本上如果它们不是全部相同,我得到一个“ Object [object]没有CSS的方法。

注意:我在mac上使用less app来编译保存。

mixin电话:

.createShades (10, "red", #ff3333);

mixin本身

// Generate our reds
.createShades (@index, @color, @base-color) when (@index > 0) {
    @i: @index;
    .createShade (@index, @i, @color, @base-color);
    .createShades (@index - 1, @color, @base-color);
}
.createShades (0, "red", @base-color) {}

.createShade (@index, @i, @color, @base-color) when (@i > 0) {
    @num: percentage((lightness(@base-color)/100) * (1 - (@i / @index)));
    @newShade: darken(@base-color, @num);
    (~".@{color}-@{i}-@{index}-text") {
        color: @newShade;
    }
    (~".@{color}-@{i}-@{index}-bg") {
        background-color: @newShade;
    }
    .createShade (@index, @i - 1, @color, @base-color);
}
.createShade (@index, 0, "red", @base-color) {}

1 个答案:

答案 0 :(得分:1)

您需要将结尾 mixin(在值达到0时使用)更改为@color而不是"red")。所以......

.createShades (0, @color, @base-color) {}
.createShade (@index, 0, @color, @base-color) {}

这是因为它正在寻找“红色”匹配,因此当您将呼叫更改为另一种颜色时,它会抛出错误,因为它与“红色”不匹配。