0

所以我试图根据从 php-less 编译器传入的变量覆盖一些“全局”变量。

我不确定我是否做错了什么,或者是否由于范围而不可能?

编辑:在这种情况下,我试图让身体的背景变成红色。

无外部

// From external less stylesheet that I can't/don't want to modify
@myColour: blue;

body {
    background: @myColour; // always blue
}

我的.less

@import "external.less"

// My styles
.setResponsive(@responsive) when (@responsive = on) {
    @myColour: green;
}
.setResponsive(@responsive) when (@responsive = off) {
    @myColour: red;
}

@responsiveState: off; // actually being set from compiler
.setResponsive(@responsiveState);

div {
    .setResponsive(@responsiveState);
    background: @myColour; // red
}

http://codepen.io/anon/pen/gbOymJ

4

1 回答 1

0

您正在使用Mixins 作为函数

不能覆盖直接在调用者范围内定义的变量。

在您的情况下,两者@myColour: blue;.setResponsive(@responsiveState);在同一范围内(主要范围)。所以你正在尝试的是不可能的。

您应该在代码末尾重新声明所有变量(使用与设置 @responsiveState 相同的机制)

于 2014-11-17T23:47:32.070 回答