可选的LESS mixin变量是否可以引用另一个变量

时间:2013-01-17 17:26:00

标签: less mixins

是否可以在参数化mixin中引用另一个变量?

.button(@textColor : @white, @iconColor : @textColor) {
    color: @textColor;
    i {
        color: @iconColor
    }
}

我希望@iconColor默认为@textColor的值。

LESS编译器正在抱怨。

1 个答案:

答案 0 :(得分:3)

我认为你需要做一个嵌套的mixin想法来获得你想要的功能。 LESS无法判断您是否已设置@textColor并将其用作第二个参数的默认设置。相反,你需要做一些类型的守卫表达。在这里,我已经使该保护表达式成为嵌套mixin,它评估主mixin中的第二个参数并相应地响应以获得@iconColor集:

.button(@textColor: @white, @setIconColor: null) {

    .setDefault() when (@setIconColor = null) {
       .doSetting(@textColor);
    }
    .setDefault() when (iscolor(@setIconColor)) {
       .doSetting(@setIconColor);
    }
    .setDefault();

    .doSetting(@iconColor) {    
        color: @textColor;
        i {
          color: @iconColor
        }
    }
}
相关问题